Legends of Idleon
Re: Legends of Idleon
True, it was mainly a side project to test a new tool I am trying to finish. Unpacking and repacking gets tedious fast, so made something that simply attaches to Legends of Idleon and replaces the Z.js on the fly. Allows for quick prototyping as well. ;D
Re: Legends of Idleon
What do you mean by capacities?salmon85 wrote: ↑Fri Jun 11, 2021 4:00 pmVery nice on the chat commands.
Downside to chat commands, you forget the . or whatever you've used, you've just said out loud what you were trying to do.
as for b.engine.getGameAttribute("CauldronInfo")[5]
it has a length of 4 and seems to match the 4 cauldrons capacities to some extent
Re: Legends of Idleon
It does rounding, is what I mean.
("CauldronInfo")[5][0] = Orange 44167.60975379015
("CauldronInfo")[5][1] = Green 540634447.8234663
("CauldronInfo")[5][2] = Purple 33509.125721804725
("CauldronInfo")[5][3] = Yellow 583673273.1806176
but in the cauldron window it shows
44.2K
541M
33.6K
584M
so that NaN on
("CauldronInfo")[6][1] for you is the correct one for Ln2
("CauldronInfo")[5][0] = Orange 44167.60975379015
("CauldronInfo")[5][1] = Green 540634447.8234663
("CauldronInfo")[5][2] = Purple 33509.125721804725
("CauldronInfo")[5][3] = Yellow 583673273.1806176
but in the cauldron window it shows
44.2K
541M
33.6K
584M
so that NaN on
("CauldronInfo")[6][1] for you is the correct one for Ln2
Re: Legends of Idleon
Here's a fix for you.
Managed to change my liquids all to 1
change to
or change the in my edited code to whatever number you want it to be
edit:
I also changed the code back to see if it saved and wasn't cosmetic.
and indeed it saved.
The change will make it so it never increases / decreases, so once you've changed it you can always change the code back to return functionality.
edit2:
I suspect you can also change the / 3600 part, so it updates sooner as this is the time in seconds for the rate
Managed to change my liquids all to 1
Code: Select all
A = b.engine.getGameAttribute("CauldronInfo")[6], r = 0 | s._DummyRepeatIndex, o = I._customBlock_CauldronStats("LiquidCap", s._DummyRepeatIndex, 0, 0), i = null == (i = b.engine.getGameAttribute("CauldronInfo")[6][0 | s._DummyRepeatIndex]) ? 0 : "number" == typeof i ? e.__cast(i, k) : "number" == typeof i && (0 | i) === i ? e.__cast(i, n) : "boolean" == typeof i ? e.__cast(i, l) ? 1 : 0 : "string" == typeof i ? parseFloat(i) : parseFloat(g.string(i)), u = I._customBlock_CauldronStats("LiquidHRrate", s._DummyRepeatIndex, 0, 0), m = s._GenINFO[50], A[r] = Math.max(0, Math.min(o, i + u * (null == m ? 0 : "number" == typeof m ? e.__cast(m, k) : "number" == typeof m && (0 | m) === m ? e.__cast(m, n) : "boolean" == typeof m ? e.__cast(m, l) ? 1 : 0 : "string" == typeof m ? parseFloat(m) : parseFloat(g.string(m))) / 3600))
Code: Select all
A = b.engine.getGameAttribute("CauldronInfo")[6], r = 0 | s._DummyRepeatIndex, o = I._customBlock_CauldronStats("LiquidCap", s._DummyRepeatIndex, 0, 0), i = null == (i = 1) ? 0 : "number" == typeof i ? e.__cast(i, k) : "number" == typeof i && (0 | i) === i ? e.__cast(i, n) : "boolean" == typeof i ? e.__cast(i, l) ? 1 : 0 : "string" == typeof i ? parseFloat(i) : parseFloat(g.string(i)), u = I._customBlock_CauldronStats("LiquidHRrate", s._DummyRepeatIndex, 0, 0), m = s._GenINFO[50], A[r] = Math.max(0, Math.min(o, i + u * (null == m ? 0 : "number" == typeof m ? e.__cast(m, k) : "number" == typeof m && (0 | m) === m ? e.__cast(m, n) : "boolean" == typeof m ? e.__cast(m, l) ? 1 : 0 : "string" == typeof m ? parseFloat(m) : parseFloat(g.string(m))) / 3600))
Code: Select all
i = null == (i = 1)
edit:
I also changed the code back to see if it saved and wasn't cosmetic.
and indeed it saved.
The change will make it so it never increases / decreases, so once you've changed it you can always change the code back to return functionality.
edit2:
I suspect you can also change the / 3600 part, so it updates sooner as this is the time in seconds for the rate
Last edited by salmon85 on Fri Jun 11, 2021 5:07 pm, edited 1 time in total.
Re: Legends of Idleon
It worked flawlessly, I am grateful that you took the time and effort to find a fix. Thank you for the help. I saw the edited message and it returned it to one and fixed the functionality of the Ln2.
Re: Legends of Idleon
No problem, It's a learning experience for me. I want to be able to unbrick the 2 characters I trashed yesterday.
Although I don't see the point now since the new account is higher level than that account ever was.
Makes me wonder if we can work out and wipe our inventories on logging in.
That's my weekend project sorted now
I normally code in python so trying to wrap my thinking around all this java shit is a headache.
Re: Legends of Idleon
If someone happens to come across the cooldown timer for skills, can you drop it in here so I can look at editing my skills down as a Wizard.
Re: Legends of Idleon
search for (regex)
cooldown: \d{1,}\w{0,}\d{0,}
replace with
cooldown: 0
skill mana costs
sets all mana costs to 0
search for (regex)
manaCost: \d{1,}\w{0,}\d{0,}
replace with
manaCost: 0
If you're using vs code regex is the .* button on the find window
pressing the > on the find window, changes it into a replace window.
The above searches will replace all skills with 0 cooldown and 0 mana cost
If you want the function to look yourself it's
Code: Select all
["scripts.CustomMaps"] = ii, ii.__name__ = "scripts.CustomMaps", ii.make = function () {
Re: Legends of Idleon
Has anyone found the code for the price of the stamps?
Re: Legends of Idleon
I have a feeling it's
Code: Select all
t._customBlock_StampCostss = function (s, a) {
var A = b.engine.getGameAttribute("DummyNumbersStatManager"),
r = [];
if (null != d.StampCostLIST ? A.setReserved("StampCostLIST", r) : A.h.StampCostLIST = r, A = b.engine.getGameAttribute("DummyNumbersStatManager"), r = b.engine.getGameAttribute("StampLevel")[0 | s][0 | a], null != d.StampCostNumber ? A.setReserved("StampCostNumber", r) : A.h.StampCostNumber = r, A = null == (A = b.engine.getGameAttribute("StampLevelMAX")[0 | s][0 | a]) ? 0 : "number" == typeof A ? e.__cast(A, k) : "number" == typeof A && (0 | A) === A ? e.__cast(A, n) : "boolean" == typeof A ? e.__cast(A, l) ? 1 : 0 : "string" == typeof A ? parseFloat(A) : parseFloat(g.string(A)), r = b.engine.getGameAttribute("DummyNumbersStatManager"), r = null != d.StampCostNumber ? r.getReserved("StampCostNumber") : r.h.StampCostNumber, .1 > Math.abs(A - (null == r ? 0 : "number" == typeof r ? e.__cast(r, k) : "number" == typeof r && (0 | r) === r ? e.__cast(r, n) : "boolean" == typeof r ? e.__cast(r, l) ? 1 : 0 : "string" == typeof r ? parseFloat(r) : parseFloat(g.string(r)))) ? A = !0 : (A = b.engine.getGameAttribute("DummyNumbersStatManager"), A = (null != d.StampCostNumber ? A.getReserved("StampCostNumber") : A.h.StampCostNumber) == b.engine.getGameAttribute("StampLevelMAX")[0 | s][0 | a]), A) {
A = b.engine.getGameAttribute("DummyNumbersStatManager"), (null != d.StampCostLIST ? A.getReserved("StampCostLIST") : A.h.StampCostLIST).push(t._customBlock_StampDetails(a + 1e3 * s)[5]), A = b.engine.getGameAttribute("DummyNumbersStatManager"), A = null != d.StampCostLIST ? A.getReserved("StampCostLIST") : A.h.StampCostLIST, r = null == (r = t._customBlock_StampDetails(a + 1e3 * s)[6]) ? 0 : "number" == typeof r ? e.__cast(r, k) : "number" == typeof r && (0 | r) === r ? e.__cast(r, n) : "boolean" == typeof r ? e.__cast(r, l) ? 1 : 0 : "string" == typeof r ? parseFloat(r) : parseFloat(g.string(r));
var i = t._customBlock_StampDetails(a + 1e3 * s)[7];
i = null == i ? 0 : "number" == typeof i ? e.__cast(i, k) : "number" == typeof i && (0 | i) === i ? e.__cast(i, n) : "boolean" == typeof i ? e.__cast(i, l) ? 1 : 0 : "string" == typeof i ? parseFloat(i) : parseFloat(g.string(i));
var o = b.engine.getGameAttribute("DummyNumbersStatManager");
o = null == (o = null != d.StampCostNumber ? o.getReserved("StampCostNumber") : o.h.StampCostNumber) ? 0 : "number" == typeof o ? e.__cast(o, k) : "number" == typeof o && (0 | o) === o ? e.__cast(o, n) : "boolean" == typeof o ? e.__cast(o, l) ? 1 : 0 : "string" == typeof o ? parseFloat(o) : parseFloat(g.string(o)), s = t._customBlock_StampDetails(a + 1e3 * s)[4], A.push(r * Math.pow(i, Math.pow(Math.round(o / (null == s ? 0 : "number" == typeof s ? e.__cast(s, k) : "number" == typeof s && (0 | s) === s ? e.__cast(s, n) : "boolean" == typeof s ? e.__cast(s, l) ? 1 : 0 : "string" == typeof s ? parseFloat(s) : parseFloat(g.string(s)))) - 1, .8)))
But this is pure speculation.
since it's 1am for me. I will play with it after sleep
-
- Cheater
- Posts: 29
- Joined: Tue May 04, 2021 11:32 pm
- Reputation: 1
-
- Cheater
- Posts: 29
- Joined: Tue May 04, 2021 11:32 pm
- Reputation: 1
Re: Legends of Idleon
hey! i downloaded it and replaced the file in the destination but then i switched the file name to .js instead of .7z but when i launched i just see the forrest backround and no load, did i do something incorrect? ( this was after extracting to a folder of course and renaming folder to app.asarinkdrgn wrote: ↑Thu Jun 10, 2021 3:46 pmsome goodies for latest patch, dun remember what all I did. But there are some tweaks to the bubbles, cards, & upgrade stones. If someone wants to figure out how to make the vial upgrades cheaper would be nice, or how to boost the build rate.
[Link]
Extract your app.asar with 7zip & the asar plugin, & pop this in the "Legends of Idleon\resources\app\distBuild\static\game" folder, overwriting the z.js that is there. Tested & loads fine for me
Use at your own risk, and have fun
- Creater0822
- Expert Cheater
- Posts: 229
- Joined: Sat Nov 18, 2017 12:02 am
- Reputation: 125
Re: Legends of Idleon
Nice discovery! Search8ing for _customBlock_StampCostss = function indeed yields the function we're looking for.salmon85 wrote: ↑Sat Jun 12, 2021 12:03 amI have a feeling it's
Code: Select all
t._customBlock_StampCostss = function (s, a) { var A = b.engine.getGameAttribute("DummyNumbersStatManager"), r = []; if (null != d.StampCostLIST ? A.setReserved("StampCostLIST", r) : A.h.StampCostLIST = r, A = b.engine.getGameAttribute("DummyNumbersStatManager"), r = b.engine.getGameAttribute("StampLevel")[0 | s][0 | a], null != d.StampCostNumber ? A.setReserved("StampCostNumber", r) : A.h.StampCostNumber = r, A = null == (A = b.engine.getGameAttribute("StampLevelMAX")[0 | s][0 | a]) ? 0 : "number" == typeof A ? e.__cast(A, k) : "number" == typeof A && (0 | A) === A ? e.__cast(A, n) : "boolean" == typeof A ? e.__cast(A, l) ? 1 : 0 : "string" == typeof A ? parseFloat(A) : parseFloat(g.string(A)), r = b.engine.getGameAttribute("DummyNumbersStatManager"), r = null != d.StampCostNumber ? r.getReserved("StampCostNumber") : r.h.StampCostNumber, .1 > Math.abs(A - (null == r ? 0 : "number" == typeof r ? e.__cast(r, k) : "number" == typeof r && (0 | r) === r ? e.__cast(r, n) : "boolean" == typeof r ? e.__cast(r, l) ? 1 : 0 : "string" == typeof r ? parseFloat(r) : parseFloat(g.string(r)))) ? A = !0 : (A = b.engine.getGameAttribute("DummyNumbersStatManager"), A = (null != d.StampCostNumber ? A.getReserved("StampCostNumber") : A.h.StampCostNumber) == b.engine.getGameAttribute("StampLevelMAX")[0 | s][0 | a]), A) { A = b.engine.getGameAttribute("DummyNumbersStatManager"), (null != d.StampCostLIST ? A.getReserved("StampCostLIST") : A.h.StampCostLIST).push(t._customBlock_StampDetails(a + 1e3 * s)[5]), A = b.engine.getGameAttribute("DummyNumbersStatManager"), A = null != d.StampCostLIST ? A.getReserved("StampCostLIST") : A.h.StampCostLIST, r = null == (r = t._customBlock_StampDetails(a + 1e3 * s)[6]) ? 0 : "number" == typeof r ? e.__cast(r, k) : "number" == typeof r && (0 | r) === r ? e.__cast(r, n) : "boolean" == typeof r ? e.__cast(r, l) ? 1 : 0 : "string" == typeof r ? parseFloat(r) : parseFloat(g.string(r)); var i = t._customBlock_StampDetails(a + 1e3 * s)[7]; i = null == i ? 0 : "number" == typeof i ? e.__cast(i, k) : "number" == typeof i && (0 | i) === i ? e.__cast(i, n) : "boolean" == typeof i ? e.__cast(i, l) ? 1 : 0 : "string" == typeof i ? parseFloat(i) : parseFloat(g.string(i)); var o = b.engine.getGameAttribute("DummyNumbersStatManager"); o = null == (o = null != d.StampCostNumber ? o.getReserved("StampCostNumber") : o.h.StampCostNumber) ? 0 : "number" == typeof o ? e.__cast(o, k) : "number" == typeof o && (0 | o) === o ? e.__cast(o, n) : "boolean" == typeof o ? e.__cast(o, l) ? 1 : 0 : "string" == typeof o ? parseFloat(o) : parseFloat(g.string(o)), s = t._customBlock_StampDetails(a + 1e3 * s)[4], A.push(r * Math.pow(i, Math.pow(Math.round(o / (null == s ? 0 : "number" == typeof s ? e.__cast(s, k) : "number" == typeof s && (0 | s) === s ? e.__cast(s, n) : "boolean" == typeof s ? e.__cast(s, l) ? 1 : 0 : "string" == typeof s ? parseFloat(s) : parseFloat(g.string(s)))) - 1, .8)))
But this is pure speculation.
since it's 1am for me. I will play with it after sleep
This piece of annoying to read code basically has an if( material cost ) else obviously coins construction
To nullify the upgrade cost look for:
Code: Select all
A.push(..a lot of ugly code..)
Code: Select all
A.push(0)
-
- Cheater
- Posts: 29
- Joined: Tue May 04, 2021 11:32 pm
- Reputation: 1
Re: Legends of Idleon
Have you found code for starsigns? How to unlock more and what not?Creater0822 wrote: ↑Sat Jun 12, 2021 1:12 amNice discovery! Search8ing for _customBlock_StampCostss = function indeed yields the function we're looking for.salmon85 wrote: ↑Sat Jun 12, 2021 12:03 amI have a feeling it's
Code: Select all
t._customBlock_StampCostss = function (s, a) { var A = b.engine.getGameAttribute("DummyNumbersStatManager"), r = []; if (null != d.StampCostLIST ? A.setReserved("StampCostLIST", r) : A.h.StampCostLIST = r, A = b.engine.getGameAttribute("DummyNumbersStatManager"), r = b.engine.getGameAttribute("StampLevel")[0 | s][0 | a], null != d.StampCostNumber ? A.setReserved("StampCostNumber", r) : A.h.StampCostNumber = r, A = null == (A = b.engine.getGameAttribute("StampLevelMAX")[0 | s][0 | a]) ? 0 : "number" == typeof A ? e.__cast(A, k) : "number" == typeof A && (0 | A) === A ? e.__cast(A, n) : "boolean" == typeof A ? e.__cast(A, l) ? 1 : 0 : "string" == typeof A ? parseFloat(A) : parseFloat(g.string(A)), r = b.engine.getGameAttribute("DummyNumbersStatManager"), r = null != d.StampCostNumber ? r.getReserved("StampCostNumber") : r.h.StampCostNumber, .1 > Math.abs(A - (null == r ? 0 : "number" == typeof r ? e.__cast(r, k) : "number" == typeof r && (0 | r) === r ? e.__cast(r, n) : "boolean" == typeof r ? e.__cast(r, l) ? 1 : 0 : "string" == typeof r ? parseFloat(r) : parseFloat(g.string(r)))) ? A = !0 : (A = b.engine.getGameAttribute("DummyNumbersStatManager"), A = (null != d.StampCostNumber ? A.getReserved("StampCostNumber") : A.h.StampCostNumber) == b.engine.getGameAttribute("StampLevelMAX")[0 | s][0 | a]), A) { A = b.engine.getGameAttribute("DummyNumbersStatManager"), (null != d.StampCostLIST ? A.getReserved("StampCostLIST") : A.h.StampCostLIST).push(t._customBlock_StampDetails(a + 1e3 * s)[5]), A = b.engine.getGameAttribute("DummyNumbersStatManager"), A = null != d.StampCostLIST ? A.getReserved("StampCostLIST") : A.h.StampCostLIST, r = null == (r = t._customBlock_StampDetails(a + 1e3 * s)[6]) ? 0 : "number" == typeof r ? e.__cast(r, k) : "number" == typeof r && (0 | r) === r ? e.__cast(r, n) : "boolean" == typeof r ? e.__cast(r, l) ? 1 : 0 : "string" == typeof r ? parseFloat(r) : parseFloat(g.string(r)); var i = t._customBlock_StampDetails(a + 1e3 * s)[7]; i = null == i ? 0 : "number" == typeof i ? e.__cast(i, k) : "number" == typeof i && (0 | i) === i ? e.__cast(i, n) : "boolean" == typeof i ? e.__cast(i, l) ? 1 : 0 : "string" == typeof i ? parseFloat(i) : parseFloat(g.string(i)); var o = b.engine.getGameAttribute("DummyNumbersStatManager"); o = null == (o = null != d.StampCostNumber ? o.getReserved("StampCostNumber") : o.h.StampCostNumber) ? 0 : "number" == typeof o ? e.__cast(o, k) : "number" == typeof o && (0 | o) === o ? e.__cast(o, n) : "boolean" == typeof o ? e.__cast(o, l) ? 1 : 0 : "string" == typeof o ? parseFloat(o) : parseFloat(g.string(o)), s = t._customBlock_StampDetails(a + 1e3 * s)[4], A.push(r * Math.pow(i, Math.pow(Math.round(o / (null == s ? 0 : "number" == typeof s ? e.__cast(s, k) : "number" == typeof s && (0 | s) === s ? e.__cast(s, n) : "boolean" == typeof s ? e.__cast(s, l) ? 1 : 0 : "string" == typeof s ? parseFloat(s) : parseFloat(g.string(s)))) - 1, .8)))
But this is pure speculation.
since it's 1am for me. I will play with it after sleep
This piece of annoying to read code basically has an if( material cost ) else obviously coins construction
To nullify the upgrade cost look for:And change both toCode: Select all
A.push(..a lot of ugly code..)
These are the final lines inside the if and else, which my VS Code's beautifier didn't really beautify for me so I had to manually add new lines between comma's before I could read it wellCode: Select all
A.push(0)
Who is online
Users browsing this forum: BigWiz, Bing [Bot], Fahry, mildsevenX, Rubyelf, sniperx287, sookaroo2, thesebas