Hello guys I'm in the process of making a new HP wash calculator as I find the one the community is using very confusing and weirdly coded. My current approach is that the user enters the following data: A.a) info about their char such as Level and what +INT stats their current equipment pieces provide individually A.b) info about equipment available to them A.c) additional info about their char such as Job, HP, MP, base INT goal but also what boss they want to be able to survive A.a + A.b is then used together to track what items should be equipped at a specific level. If the player updates the table after a levelup and a better +INT equip is available, the spreadsheet will highlight info accordingly. If A.c is updated as well, the tool is supposed to provide steps on how to wash according to the parameters provided. It does use info from A.a and A.b. What's already fully operational: A.a, A.b => Correctly points out mistakes when non-optimal equipment is used and suggests best options. What's in development: A.c => Some formulas are already implemented, others are missing, working on that. Also textual instructions on how to wash are missing for now. Note that the input isn't fully defined yet and can change, but you get the rough idea. The calculator would then take all these inputs into account and calculate a step by step guide on what the user is supposed to do. It would also add tips all in one place. Now what I believe I need for this to work is some basic formulas. As I understand, every levelup gives a certain amount of HP and MP. Additionally we have +HP and +MP on job advancements. And of course let's not forget the HP and MP changes through APRs. So now we have this: for HP/MP on Level Up I have this post here: HP/MP on Level Up (Thanks @Matt) for HP/MP on 1st Job Advancement: HP/MP on 1st Job Advancement (Thanks @pragmasaurus) for HP/MP on 2nd Job Advancement: HP/MP on 2nd Job Advancement (Thanks @pragmasaurus) for HP/MP on 3rd Job Advancement: HP/MP on 3rd Job Advancement (Thanks @Dave Deviluke) for HP/MP on 4th Job Advancement: HP/MP on 4th Job Advancement (Thanks @Dave Deviluke) for HP/MP through APR: HP from APR (Thanks @Pheelo) for HP through Warrior skills: HP through Warrior skills for HP through Brawler skills: HP through Brawler skills Here is the current progress: A.a) ■■■■■■■■■■ 100% A.b) ■■■■■■■■■■ 100% A.c) ■□□□□□□□□□ ͏10% Total A.c) ■■■■■■■□□□ ͏80% Formulas A.c) □□□□□□□□□□ ͏ 0% Washing for Archer A.c) □□□□□□□□□□ ͏ 0% Washing for Magician (maybe not necessary^^) A.c) □□□□□□□□□□ ͏ 0% Washing for Pirate A.c) ■■■□□□□□□□ ͏30% Washing for Rogue A.c) □□□□□□□□□□ ͏ 0% Washing for Swordman A.c) □□□□□□□□□□ ͏ 0% Textual instructions Worked on "A.c: Formulas" yesterday. Added calculations for min/max ranges for both HP and MP. This takes into account: all Jobs, all Levels, INT equipment available and its +MP bonuses on Level Ups. Calculator will now automatically pick the best INT equips available for every level. The "target base INT" parameter is now used as well. Calculator now puts AP into INT first until it reaches this goal. All of course affects the MP gained. More MP, more washings Thanks for the support, guys! I will post the calculator once it's in alpha.
Tiny update. I tested out what happens during a Beginner -> Magician job advancement. It seems like you get something like +0HP and +102MP. I will do the 1st advancement a couple of times to check. Gotta get the data somehow :/
For the 3rd and 4th job custom HP gains upon job advancement, you may refer to this https://royals.ms/forum/threads/update-54-05-07-2018.123721/ I don't think 1st and 2nd job was changed
Thank you, if I can assume this info is still up to date this actually helps out a lot. Thank you! I will compile this reference into the original post so it's all in one place. Will later expand info from the references so we don't have to manually go in there every time and keep the reference link. Do you happen to have any info on 1st and second job? I will explain what I did (and failed), but honestly.. feel free to skip this part if it's too many nerds per second: First job (as mentioned in my reply previously) gave on my mage lvl8 +0HP and +102MP. I tried to understand how these numbers came to be. My working theory was that the +MP happen because the 1st job advancement tries to compensate for the beginner levels. In other words: A beginner of level 8 (= 7 Level Ups) would have gained between 7*10 and 7*12 MP. A mage (who was allowed to be a mage from level 1) would have gained between 7*22 and 7*24 MP. The mage would have gained more so maybe there's a compensation in place. The smallest difference between Beginner and Mage MP (lucky beginner +MP and unlucky mage +MP) would be 7*22-7*12 and the biggest (unlucky beginner +MP and lucky mage +MP) would be 7*24-7*10. Which would mean a beginner who chooses to be a mage would be compensated with +MP valued between 70 and 98. Since I got +102MP it means I'm missing something. Just sharing my thought process here.
@Dave Deviluke: Do you think there is a chance a dev would provide the code for how the HP/MP bonuses are calculated during the job advancements? It would be unproportionally tedious to test it out myself, especially if randomness is involved. Even tedious with the help of others, additionally introducing new sources for errors I would love to avoid. I hope the devs don't mind
I am unable to confirm on behalf of the Devs You don't have to test it out yourself, you can request buddies/guildmates for help, or submissions from the community for screenshots of before and after job advancements
How would I contact them in a non-intrusive way? I'm afraid this won't really help me because I assume there's some randomness involved (the +102MP make me think that). If there is randomness involved, I would only get a random value instead of a correct min/max range. I feel like asking the devs is way more efficient because more precise and faster too.
This topic may be helpful to fill in the gaps for values that weren't changed in the 2018 patch: https://royals.ms/forum/threads/can-we-get-the-source-code-for-job-advacement-hp-mp-gains.45623/
Dear sir, I think I love you.. According to the code my +102MP on 1st job as Magician was totally realistic. Unlucky, but definitely realistic I will compile this data in the original post and then expand it fully with all the references.. when I wake up again that is. Today was a longer day. Thank you 2000!
Working on 2) I realized this code has either a bug or is outdated. Here is what I mean (check 1st Job Advancement for Thief, Bowman and Pirate): Code: public void changeJob(MapleJob newJob) { this.job = newJob; this.remainingSp++; if (newJob.getId() % 10 == 2) { this.remainingSp += 2; } updateSingleStat(MapleStat.AVAILABLESP, this.remainingSp); updateSingleStat(MapleStat.JOB, newJob.getId()); if (job.getId() == 100) { // 1st Job Warrior maxhp += rand(200, 250); } else if (job.getId() == 200) { // 1st Job Magician maxmp += rand(100, 150); } else if (job.getId() % 100 == 0) { // 1st Job Bowman, Thief and Pirate maxhp += rand(100, 150); // <--- This seems fine, +100-150 HP maxhp += rand(25, 50); // <--- This was probably meant to be MP at some point though } else if ( job.getId() > 0 && job.getId() < 200 ) { // 2nd - 4th Job Warrior maxhp += rand(300, 350); } else if (job.getId() < 300) { // 2nd - 4th Job Magician maxmp += rand(450, 500); } else if (job.getId() > 0) { // Everything else, so 2nd - 4th Jobs for Bowman, Thief and Pirate maxhp += rand(300, 350); maxmp += rand(150, 200); } if (maxhp >= 30000) { maxhp = 30000; } if (maxmp >= 30000) { maxmp = 30000; } } I will assume these numbers simply mean a range between (100+25) and (150+50) HP. So a Thief, a Bowman and a Pirate can get +125-200HP when finishing their 1st Job Advancement. Would be cool if we can verify that at some point. Shouldn't be too complicated. Maybe when alpha is here we can compile these kind of questions in a list and ask devs. Maybe they didn't see the bug and we've been playing maple wrong all these years . Just putting this out here for future reference.
We ran into a tiny problem, people. We need to know at what Level a Brawler can start skilling his "Improving Max HP Increase" skill and also how many points can he put there at that level. I will put an example for Warriors so you see what I mean: Warrior: At level 10 we can become a Warrior. That gives us +1 SP. For optimization we will put this 1SP into "Improving HP Recovery" (We need this skill to be on Level 5 so we can start skilling the skill we actually want - "Improving Max HP Increase"). At Level 11 we put 3SP into "Improving HP Recovery" again - it is Level 4 now. At Level 12 we put 1 SP into "Improving HP Recovery" - it is Level 5 now (we unlocked "Improving Max HP Increase"). At Level 12 we put 2 SP into "Improving Max HP Increase" - this skill on Level 2 gives us +8HP on every levelup. At Level 13 we put 3 SP into "Improving Max HP Increase" - this skill on Level 5 gives us +20HP on every levelup. At Level 14 we put 3 SP into "Improving Max HP Increase" - this skill on Level 8 gives us +32HP on every levelup. At Level 15 we put 2 SP into "Improving Max HP Increase" - this skill on Level 10 gives us +40HP on every levelup. Now we need the same information abour Brawlers. To get that I will sit in the sexy NPC Pirate lady cabin and wait for a couple Level 30ies to appear for 2nd Job. All we really need to know is if Brawlers get +1SP on 2nd Job Advancement, should be easy . I hope the NPC lady is nice company. EDIT: Yes, Brawlers seem to get +1SP. Moving on with the code
Here is the formula to calculate Maximum HP possible for an Bow Master of level 149. Taking these values here because that's taken from a real character I encountered: Code: // Number of Level Ups from Level 1 to Level for 1st Job ( // Level for 1st Job Advancement as Archer 10 // Starting level - 1 ) // Maximum +HP on Level Up for Beginner * 16 // Number of Level Ups as Archer (after Level 10) ( // Current Level + 149 // Level for 1st Job - 10 ) // Maximum +HP on Level Up for Archer * 24 // Maximum +HP from 1st Job Advancement + 200 // Maximum +HP from 2nd Job Advancement + 350 // Maximum +HP from 3rd Job Advancement + 350 // Maximum +HP from 4th Job Advancement + 350 If we write it out in one line, we get this: (10 - 1) * 16 + (149 - 10) * 24 + 200 + 350 + 350 + 350 = 4730 HP A Bow Master of Level 149 can have 4730 HP maximum (through Level Ups and Job Advancements). The only problem was that the character I met (Bow Master Lvl 149) had 6169 HP instead. Again, no washings, no HP quests and no HP gears either. The fact both NL and BM (they share the very same calculations in code) seem to be affected, looks like the actual number and the numbers we have are different. Maybe an update we missed? Testing this for Buccaneers and Magicians seems to have predicted realistic results. My next step would be to make an Archer and check if we can get more than +24HP per levelup. Maybe somebody has an idea on where we made a mistake. Every feedback greatly appreciated <3
Hmm looking into this, the current wash calculator puts a lv 149 unwashed BM at an (I believe average, but this could be min) HP of 5271. Here's the formula it's using: =ROUNDDOWN((((B150-1)*325+A150*22)+118.5+300+600),0) A150 is level (149), and B140 is job (4)
Thank you very much for pointing this out. I too believe it's the average as all values used are averages as far as I can tell. I reverse engineered some of the formulas previously, but it didn't cross my mind to check for this one - smart! Here's my take on this part: Code: ROUNDDOWN( ( ( // Number of Job Advancements after 1st Job Advancement ( // Number of Job Advancements character went through (4 in this case) B150 // Ignore 1st Job Advancement -1 ) // Average amount of +HP through 2nd-4th Job advancements (300-350) *325 // Character level (149 in this case) +A150 // Average +HP on Level Up for Archers (20-24) *22 ) // What is this? +118.5 // What is this? +300 // What is this? +600 ), 0 ) The `A150 * 22` (Current level * average +HP on Level Up for Archers) bothers me a little because if you're level 2, you only had 1 Level Up. So the formula should be this instead: (A150 - 1) * 22 Another problem I see is that this assumes that during the beginner Levels 1-10 you're getting +HP on Level Up for Archers (not Beginners). Do characters that do the 1st Job Advancement from Beginners->Archers get compensated as if they were Archers since level 1? Then there is this 118.5 I can't find anywhere. The 300 and 600 come from an update that balances HP numbers. Jobs have been buffed in with a flat +HP accordingly. Here's the post about it: These look like the devs were trying to balance out the game and gave Archers flat +HP on 2nd, 3rd and 4th Job Advancements. Is that a thing? The 118.5 really stands out. Because all these values have been averages so far, I assume there's a minimum and a maximum too here, which ends up being 118.5. Also I just realized my formula missed the initial 50HP a character starts with. That's fixed now EDIT: Okay, I think we just found out where the +300+600 come from. This post explains it: Why +300+600. The good part is we know we're on the right track with how we structure everything. You can see it because these kind of "magical" numbers are not so magical in our new calculator Why the 118.5 though?
Here is the new formula, ignore the previous one Code: ROUNDDOWN( ( ( // Number of Job Advancements after 1st Job Advancement ( // Number of Job Advancements character went through 4 // Ignore 1st Job Advancement -1 ) // Average amount of +HP through 2nd-4th Job advancements (300-350) *325 // Character level +149 // Average +HP on Level Up for Archers (20-24) *22 ) // What is this? +118.5 // Buff introducing additional HP on 3rd Job Advancement for Archers +300 // Buff introducing additional HP on 4th Job Advancement for Archers +600 ), 0 ) It's probably a good idea to I read the WHOLE thread on the old calculator so we don't forget anything. Also we need to demystify these formula numbers anyway, maybe there are explanations to be found there . EDIT: Read through the whole thread. Sad Shi got burnt out that hard. But I still didn't find anything on the 118.5. Please somebody with info, enlighten me :| These are the values Shi uses: Night Lord ͏ ͏+118.5 Shadower ͏ ͏ ͏+118.5 Bow Master ͏ ͏+118.5 Marksman ͏ ͏ ͏+118.5 Corsair ͏ ͏ ͏ ͏+88.5 Buccaneer ͏ ͏-211.5 Hero ͏ ͏ ͏ ͏ ͏ ͏ ͏-399 Dark Knight ͏-399 Paladin ͏ ͏ ͏ ͏-399 Magician ͏ ͏ ͏ ͏+52 Beginner ͏ ͏ ͏ ͏+36
Hello again, everybody I tried to find any source code on that matter but wasn't able to find anything. It seems the best solution for now would be to just ignore these numbers but add some debugging information about them being used in the Shi calculator. If anybody happens to know what those numbers are or how to get in contact with Shi, please let me know
Thought I'd record some data here that I was thinking about it yesterday that I haven't seen put together in the same place, maybe you already know it but I didn't see it mentioned in your writeup. The fully revised hp washing guide has APR data on -MP and +HP, and data on fresh +HP. But not data for fresh +MP, and APR data on -HP and +MP. The value (fresh+MP - APR-MP) is called deficit in the sheet since it decreases the MP you expect to gain from MP washing, and is 1 for classes other than pirate for which it is 5. The APR -HP ,+MP values are relevant for bucc/warrior/mage skill washing, I am told APR -HP is the same as APR +HP for pirate. For mage the APR -HP +MP are -10hp +19mp (this is without the MP increase skill, otherwise +29mp) which allows some efficient sp washing routes.