The True Minimum MaxMP?

Discussion in 'General Discussion' started by Gossamer, Dec 2, 2015.

  1. Gossamer
    Offline

    Gossamer Donator

    Joined:
    Apr 15, 2014
    Messages:
    433
    Likes Received:
    449
    Gender:
    Male
    Code:
    case 8192: // MP
                                if (c.getPlayer().getHpApUsed() <= 0 || c.getPlayer().getMpApUsed() == 10000) {
                                    return;
                                }
                                int maxmp = c.getPlayer().getMaxMp();
                                if (c.getPlayer().getJob().isA(MapleJob.BEGINNER)) {
                                    maxmp -= 8;
                                } else if (c.getPlayer().getJob().isA(MapleJob.WARRIOR)) {
                                    maxmp -= 4;
                                } else if (c.getPlayer().getJob().isA(MapleJob.MAGICIAN)) {
                                    ISkill improvingMaxMP = SkillFactory.getSkill(2000001);
                                    int improvingMaxMPLevel = c.getPlayer().getSkillLevel(improvingMaxMP);
                                    maxmp -= 20;
                                    if (improvingMaxMPLevel >= 1) {
                                        maxmp -= improvingMaxMP.getEffect(improvingMaxMPLevel).getY();
                                    }
                                } else if (c.getPlayer().getJob().isA(MapleJob.BOWMAN)) {
                                    maxmp -= 12;
                                } else if (c.getPlayer().getJob().isA(MapleJob.THIEF)) {
                                    maxmp -= 12;
                                } else if (c.getPlayer().getJob().isA(MapleJob.PIRATE)) {
                                    maxmp -= 16;
                                }
                                if (maxmp < ((c.getPlayer().getLevel() * 2) + 148)) {
                                    return;
                                }
                                c.getPlayer().setMpApUsed(c.getPlayer().getMpApUsed() - 1);
                                c.getPlayer().setMp(maxmp);
                                c.getPlayer().setMaxMp(maxmp);
                                statupdate.add(new Pair<MapleStat, Integer>(MapleStat.MP, c.getPlayer().getMaxMp()));
                                statupdate.add(new Pair<MapleStat, Integer>(MapleStat.MAXMP, c.getPlayer().getMaxMp()));
                                break;
                            default:
                                c.getSession().write(MaplePacketCreator.updatePlayerStats(MaplePacketCreator.EMPTY_STATUPDATE, true));
                                return;
                        }
    if (maxmp < ((c.getPlayer().getLevel() * 2) + 148)) {
    return;
    }

    It would seem to me that this line of code dictates that the minimum MaxMP for every class is Level*2 + 148.

    Pheelo's HP Washing Guide lists the Minimum MP Formulas as:

    (This is for after 2nd job advancement)
    Min MP Formula for Beginner = 10 x level + 2
    Min MP Formula for Spearman class = 4 x level + 156
    Min MP Formula for Fighter class = 4 x level + 56
    Min MP Formula for Bowman = 14 x level + 148
    Min MP Formula for Thief = 14 x level + 148
    Min MP Formula for Pirate = 18 x level + 111

    I am especially skeptical of the split between Fighter and Spearman/Page. No code supports this split for any job advancement or level up bonuses, or anything.

    Does anyone have any data to support either the code or Pheelo's Guide? It's quite a difference. Or is there somewhere else in the code I should be looking for further minimums?
     
    Last edited: Dec 2, 2015
    Chrizz likes this.

Share This Page