Java Examples for server.life.Element

The following java examples will help you to understand the usage of server.life.Element. These source code samples are taken from different open source projects.

Example 1
Project: Orpheus-master  File: AbstractDealDamageHandler.java View source code
@SuppressWarnings("unused")
protected synchronized void applyAttack(AttackInfo attack, final MapleCharacter player, int attackCount) {
    ISkill theSkill = null;
    MapleStatEffect attackEffect = null;
    try {
        if (player.isBanned()) {
            return;
        }
        if (attack.skill != 0) {
            theSkill = SkillFactory.getSkill(attack.skill);
            attackEffect = attack.getAttackEffect(player, theSkill);
            if (attackEffect == null) {
                player.getClient().announce(MaplePacketCreator.enableActions());
                return;
            }
            if (player.getMp() < attackEffect.getMpCon()) {
                AutobanFactory.MPCON.addPoint(player.getAutobanManager(), "Skill: " + attack.skill + "; Player MP: " + player.getMp() + "; MP Needed: " + attackEffect.getMpCon());
            }
            if (attack.skill != Cleric.HEAL) {
                if (player.isAlive()) {
                    attackEffect.applyTo(player);
                } else {
                    player.getClient().announce(MaplePacketCreator.enableActions());
                }
            }
            int mobCount = attackEffect.getMobCount();
            if (attack.skill == DawnWarrior.FINAL_ATTACK || attack.skill == Page.FINAL_ATTACK_BW || attack.skill == Page.FINAL_ATTACK_SWORD || attack.skill == Fighter.FINAL_ATTACK_SWORD || attack.skill == Fighter.FINAL_ATTACK_AXE || attack.skill == Spearman.FINAL_ATTACK_SPEAR || attack.skill == Spearman.FINAL_ATTACK_POLEARM || attack.skill == WindArcher.FINAL_ATTACK || attack.skill == DawnWarrior.FINAL_ATTACK || attack.skill == Hunter.FINAL_ATTACK || attack.skill == Crossbowman.FINAL_ATTACK) {
                //:(
                mobCount = 15;
            }
            if (attack.numAttacked > mobCount) {
                AutobanFactory.MOB_COUNT.autoban(player, "Skill: " + attack.skill + "; Count: " + attack.numAttacked + " Max: " + attackEffect.getMobCount());
                return;
            }
        }
        if (!player.isAlive()) {
            return;
        }
        //WTF IS THIS F3,1
        /*if (attackCount != attack.numDamage && attack.skill != ChiefBandit.MESO_EXPLOSION && attack.skill != NightWalker.VAMPIRE && attack.skill != WindArcher.WIND_SHOT && attack.skill != Aran.COMBO_SMASH && attack.skill != Aran.COMBO_PENRIL && attack.skill != Aran.COMBO_TEMPEST && attack.skill != NightLord.NINJA_AMBUSH && attack.skill != Shadower.NINJA_AMBUSH) {
            return;
            }*/
        int totDamage = 0;
        final MapleMap map = player.getMap();
        if (attack.skill == ChiefBandit.MESO_EXPLOSION) {
            int delay = 0;
            for (Integer oned : attack.allDamage.keySet()) {
                MapleMapObject mapobject = map.getMapObject(oned.intValue());
                if (mapobject != null && mapobject.getType() == MapleMapObjectType.ITEM) {
                    final MapleMapItem mapitem = (MapleMapItem) mapobject;
                    if (mapitem.getMeso() > 9) {
                        synchronized (mapitem) {
                            if (mapitem.isPickedUp()) {
                                return;
                            }
                            TimerManager.getInstance().schedule(new Runnable() {

                                @Override
                                public void run() {
                                    map.removeMapObject(mapitem);
                                    map.broadcastMessage(MaplePacketCreator.removeItemFromMap(mapitem.getObjectId(), 4, 0), mapitem.getPosition());
                                    mapitem.setPickedUp(true);
                                }
                            }, delay);
                            delay += 100;
                        }
                    } else if (mapitem.getMeso() == 0) {
                        return;
                    }
                } else if (mapobject != null && mapobject.getType() != MapleMapObjectType.MONSTER) {
                    return;
                }
            }
        }
        for (Integer oned : attack.allDamage.keySet()) {
            final MapleMonster monster = map.getMonsterByOid(oned.intValue());
            if (monster != null) {
                int totDamageToOneMonster = 0;
                List<Integer> onedList = attack.allDamage.get(oned);
                for (Integer eachd : onedList) {
                    totDamageToOneMonster += eachd.intValue();
                }
                totDamage += totDamageToOneMonster;
                player.checkMonsterAggro(monster);
                if (player.getBuffedValue(MapleBuffStat.PICKPOCKET) != null && (attack.skill == 0 || attack.skill == Rogue.DOUBLE_STAB || attack.skill == Bandit.SAVAGE_BLOW || attack.skill == ChiefBandit.ASSAULTER || attack.skill == ChiefBandit.BAND_OF_THIEVES || attack.skill == Shadower.ASSASSINATE || attack.skill == Shadower.TAUNT || attack.skill == Shadower.BOOMERANG_STEP)) {
                    ISkill pickpocket = SkillFactory.getSkill(ChiefBandit.PICKPOCKET);
                    int delay = 0;
                    final int maxmeso = player.getBuffedValue(MapleBuffStat.PICKPOCKET).intValue();
                    for (final Integer eachd : onedList) {
                        if (pickpocket.getEffect(player.getSkillLevel(pickpocket)).makeChanceResult()) {
                            TimerManager.getInstance().schedule(new Runnable() {

                                @Override
                                public void run() {
                                    player.getMap().spawnMesoDrop(Math.min((int) Math.max(((double) eachd / (double) 20000) * (double) maxmeso, (double) 1), maxmeso), new Point((int) (monster.getPosition().getX() + Randomizer.nextInt(100) - 50), (int) (monster.getPosition().getY())), monster, player, true, (byte) 0);
                                }
                            }, delay);
                            delay += 100;
                        }
                    }
                } else if (attack.skill == Marksman.SNIPE) {
                    totDamageToOneMonster = 195000 + Randomizer.nextInt(5000);
                } else if (attack.skill == Marauder.ENERGY_DRAIN || attack.skill == ThunderBreaker.ENERGY_DRAIN || attack.skill == NightWalker.VAMPIRE || attack.skill == Assassin.DRAIN) {
                    player.addHP(Math.min(monster.getMaxHp(), Math.min((int) ((double) totDamage * (double) SkillFactory.getSkill(attack.skill).getEffect(player.getSkillLevel(SkillFactory.getSkill(attack.skill))).getX() / 100.0), player.getMaxHp() / 2)));
                } else if (attack.skill == Bandit.STEAL) {
                    ISkill steal = SkillFactory.getSkill(Bandit.STEAL);
                    if (Math.random() < 0.3 && steal.getEffect(player.getSkillLevel(steal)).makeChanceResult()) {
                        //Else it drops too many cool stuff :(
                        List<MonsterDropEntry> toSteals = MapleMonsterInformationProvider.getInstance().retrieveDrop(monster.getId());
                        Collections.shuffle(toSteals);
                        int toSteal = toSteals.get(rand(0, (toSteals.size() - 1))).itemId;
                        MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance();
                        IItem item = null;
                        if (ItemConstants.getInventoryType(toSteal).equals(MapleInventoryType.EQUIP)) {
                            item = ii.randomizeStats((Equip) ii.getEquipById(toSteal));
                        } else {
                            item = new Item(toSteal, (byte) 0, (short) 1, -1);
                        }
                        player.getMap().spawnItemDrop(monster, player, item, monster.getPosition(), false, false);
                        monster.addStolen(toSteal);
                    }
                } else if (attack.skill == FPArchMage.FIRE_DEMON) {
                    monster.setTempEffectiveness(Element.ICE, ElementalEffectiveness.WEAK, SkillFactory.getSkill(FPArchMage.FIRE_DEMON).getEffect(player.getSkillLevel(SkillFactory.getSkill(FPArchMage.FIRE_DEMON))).getDuration() * 1000);
                } else if (attack.skill == ILArchMage.ICE_DEMON) {
                    monster.setTempEffectiveness(Element.FIRE, ElementalEffectiveness.WEAK, SkillFactory.getSkill(ILArchMage.ICE_DEMON).getEffect(player.getSkillLevel(SkillFactory.getSkill(ILArchMage.ICE_DEMON))).getDuration() * 1000);
                } else if (attack.skill == Outlaw.HOMING_BEACON || attack.skill == Corsair.BULLSEYE) {
                    player.setMarkedMonster(monster.getObjectId());
                    player.announce(MaplePacketCreator.giveBuff(1, attack.skill, Collections.singletonList(new MapleBuffStatDelta(MapleBuffStat.HOMING_BEACON, monster.getObjectId()))));
                }
                if (player.getBuffedValue(MapleBuffStat.HAMSTRING) != null) {
                    ISkill hamstring = SkillFactory.getSkill(Bowmaster.HAMSTRING);
                    if (hamstring.getEffect(player.getSkillLevel(hamstring)).makeChanceResult()) {
                        MonsterStatusEffect monsterStatusEffect = new MonsterStatusEffect(Collections.singletonMap(MonsterStatus.SPEED, hamstring.getEffect(player.getSkillLevel(hamstring)).getX()), hamstring, null, false);
                        monster.applyStatus(player, monsterStatusEffect, false, hamstring.getEffect(player.getSkillLevel(hamstring)).getY() * 1000);
                    }
                }
                if (player.getBuffedValue(MapleBuffStat.BLIND) != null) {
                    ISkill blind = SkillFactory.getSkill(Marksman.BLIND);
                    if (blind.getEffect(player.getSkillLevel(blind)).makeChanceResult()) {
                        MonsterStatusEffect monsterStatusEffect = new MonsterStatusEffect(Collections.singletonMap(MonsterStatus.ACC, blind.getEffect(player.getSkillLevel(blind)).getX()), blind, null, false);
                        monster.applyStatus(player, monsterStatusEffect, false, blind.getEffect(player.getSkillLevel(blind)).getY() * 1000);
                    }
                }
                final int id = player.getJob().getId();
                if (id == 121 || id == 122) {
                    for (int charge = 1211005; charge < 1211007; charge++) {
                        ISkill chargeSkill = SkillFactory.getSkill(charge);
                        if (player.isBuffFrom(MapleBuffStat.WK_CHARGE, chargeSkill)) {
                            final ElementalEffectiveness iceEffectiveness = monster.getEffectiveness(Element.ICE);
                            if (totDamageToOneMonster > 0 && iceEffectiveness == ElementalEffectiveness.NORMAL || iceEffectiveness == ElementalEffectiveness.WEAK) {
                                monster.applyStatus(player, new MonsterStatusEffect(Collections.singletonMap(MonsterStatus.FREEZE, 1), chargeSkill, null, false), false, chargeSkill.getEffect(player.getSkillLevel(chargeSkill)).getY() * 2000);
                            }
                            break;
                        }
                    }
                } else if (player.getBuffedValue(MapleBuffStat.BODY_PRESSURE) != null || player.getBuffedValue(MapleBuffStat.COMBO_DRAIN) != null) {
                    ISkill skill;
                    if (player.getBuffedValue(MapleBuffStat.BODY_PRESSURE) != null) {
                        skill = SkillFactory.getSkill(21101003);
                        final MapleStatEffect eff = skill.getEffect(player.getSkillLevel(skill));
                        if (eff.makeChanceResult()) {
                            monster.applyStatus(player, new MonsterStatusEffect(Collections.singletonMap(MonsterStatus.NEUTRALISE, 1), skill, null, false), false, eff.getX() * 1000, false);
                        }
                    }
                    if (player.getBuffedValue(MapleBuffStat.COMBO_DRAIN) != null) {
                        skill = SkillFactory.getSkill(21100005);
                        player.setHp(player.getHp() + ((totDamage * skill.getEffect(player.getSkillLevel(skill)).getX()) / 100), true);
                        player.updateSingleStat(MapleStat.HP, player.getHp());
                    }
                } else if (id == 412 || id == 422 || id == 1411) {
                    ISkill type = SkillFactory.getSkill(player.getJob().getId() == 412 ? 4120005 : (player.getJob().getId() == 1411 ? 14110004 : 4220005));
                    if (player.getSkillLevel(type) > 0) {
                        MapleStatEffect venomEffect = type.getEffect(player.getSkillLevel(type));
                        for (int i = 0; i < attackCount; i++) {
                            if (venomEffect.makeChanceResult()) {
                                if (monster.getVenomMulti() < 3) {
                                    monster.setVenomMulti((monster.getVenomMulti() + 1));
                                    MonsterStatusEffect monsterStatusEffect = new MonsterStatusEffect(Collections.singletonMap(MonsterStatus.POISON, 1), type, null, false);
                                    monster.applyStatus(player, monsterStatusEffect, false, venomEffect.getDuration(), true);
                                }
                            }
                        }
                    }
                }
                if (attack.skill != 0) {
                    if (attackEffect.getFixDamage() != -1) {
                        if (totDamageToOneMonster != attackEffect.getFixDamage() && totDamageToOneMonster != 0) {
                            AutobanFactory.FIX_DAMAGE.autoban(player, String.valueOf(totDamageToOneMonster) + " damage");
                        }
                    }
                }
                if (totDamageToOneMonster > 0 && attackEffect != null && attackEffect.getMonsterStati().size() > 0) {
                    if (attackEffect.makeChanceResult()) {
                        monster.applyStatus(player, new MonsterStatusEffect(attackEffect.getMonsterStati(), theSkill, null, false), attackEffect.isPoison(), attackEffect.getDuration());
                    }
                }
                if (player.getJob().equals(MapleJob.LEGEND) || player.getJob().isA(MapleJob.ARAN4)) {
                    byte comboLevel = (byte) (player.getJob().equals(MapleJob.LEGEND) ? 10 : player.getSkillLevel(Aran.COMBO_ABILITY));
                    if (comboLevel > 0) {
                        final long currentTime = System.currentTimeMillis();
                        short combo = 0;
                        if (attack.skill == Aran.COMBO_SMASH || attack.skill == Aran.COMBO_PENRIL || attack.skill == Aran.COMBO_TEMPEST) {
                            //WHY NOT USE COMBO LOL
                            player.setCombo(combo);
                        }
                        for (Integer amount : onedList) {
                            combo = player.getCombo();
                            if ((currentTime - player.getLastCombo()) > 3000 && combo > 0) {
                                combo = 0;
                                player.cancelEffectFromBuffStat(MapleBuffStat.ARAN_COMBO);
                            }
                            combo++;
                            switch(combo) {
                                case 10:
                                case 20:
                                case 30:
                                case 40:
                                case 50:
                                case 60:
                                case 70:
                                case 80:
                                case 90:
                                case 100:
                                    if ((combo / 10) <= comboLevel) {
                                        SkillFactory.getSkill(21000000).getEffect(combo / 10).applyComboBuff(player, combo);
                                    }
                                    break;
                            }
                            player.setCombo(combo);
                        }
                        player.setLastCombo(currentTime);
                    }
                }
                if (attack.isHH && !monster.isBoss()) {
                    map.damageMonster(player, monster, monster.getHp() - 1);
                } else if (attack.isHH) {
                    int HHDmg = (player.calculateMaxBaseDamage(player.getTotalWatk()) * (SkillFactory.getSkill(Paladin.HEAVENS_HAMMER).getEffect(player.getSkillLevel(SkillFactory.getSkill(Paladin.HEAVENS_HAMMER))).getDamage() / 100));
                    map.damageMonster(player, monster, (int) (Math.floor(Math.random() * (HHDmg / 5) + HHDmg * .8)));
                } else {
                    map.damageMonster(player, monster, totDamageToOneMonster);
                }
            }
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}
Example 2
Project: mapleLemon-master  File: PlayerStats.java View source code
public Pair<Integer, Integer> handleEquipAdditions(MapleItemInformationProvider ii, MapleCharacter chra, boolean first_login, Map<Skill, SkillEntry> sData, int itemId) {
    List<Triple<String, String, String>> additions = ii.getEquipAdditions(itemId);
    if (additions == null) {
        return null;
    }
    int localmaxhp_x = 0;
    int localmaxmp_x = 0;
    int skillid = 0;
    int skilllevel = 0;
    for (Triple add : additions) {
        if (((String) add.getMid()).contains("con")) {
            continue;
        }
        int right = ((String) add.getMid()).equals("elemVol") ? 0 : Integer.parseInt((String) add.getRight());
        switch((String) add.getLeft()) {
            case "elemboost":
                {
                    String craft = ii.getEquipAddReqs(itemId, (String) add.getLeft(), "craft");
                    if ((((String) add.getMid()).equals("elemVol")) && ((craft == null))) {
                        int value = Integer.parseInt(((String) add.getRight()).substring(1, ((String) add.getRight()).length()));
                        Element key = Element.getFromChar(((String) add.getRight()).charAt(0));
                        if (this.elemBoosts.get(key) != null) {
                            value += (this.elemBoosts.get(key));
                        }
                        this.elemBoosts.put(key, value);
                    }
                    break;
                }
            case "mobcategory":
                if (((String) add.getMid()).equals("damage")) {
                    this.percent_damage_rate += right;
                    this.percent_boss_damage_rate += right;
                }
                break;
            case "critical":
                {
                    boolean canJob = false;
                    boolean canLevel = false;
                    String job = ii.getEquipAddReqs(itemId, (String) add.getLeft(), "job");
                    if (job != null) {
                        if (job.contains(",")) {
                            String[] jobs = job.split(",");
                            for (String x : jobs) {
                                if (chra.getJob() == Integer.parseInt(x)) {
                                    canJob = true;
                                }
                            }
                        } else if (chra.getJob() == Integer.parseInt(job)) {
                            canJob = true;
                        }
                    }
                    String level = ii.getEquipAddReqs(itemId, (String) add.getLeft(), "level");
                    if ((level != null) && (chra.getLevel() >= Integer.parseInt(level))) {
                        canLevel = true;
                    }
                    if (((job != null) && (canJob)) || ((job == null) && (((level != null) && (canLevel)) || (level == null)))) {
                        switch((String) add.getMid()) {
                            case "prob":
                                this.passive_sharpeye_rate = (short) (this.passive_sharpeye_rate + right);
                                break;
                            case "damage":
                                this.passive_sharpeye_min_percent = (short) (this.passive_sharpeye_min_percent + right);
                                this.passive_sharpeye_max_percent = (short) (this.passive_sharpeye_max_percent + right);
                                break;
                        }
                    }
                    break;
                }
            case "boss":
                {
                    String craft = ii.getEquipAddReqs(itemId, (String) add.getLeft(), "craft");
                    if ((((String) add.getMid()).equals("damage")) && ((craft == null))) {
                        this.percent_boss_damage_rate += right;
                    }
                    break;
                }
            case "mobdie":
                {
                    String craft = ii.getEquipAddReqs(itemId, (String) add.getLeft(), "craft");
                    if ((craft == null)) {
                        switch((String) add.getMid()) {
                            case "hpIncOnMobDie":
                                this.hpRecover += right;
                                this.hpRecoverProp += 5;
                                break;
                            case "mpIncOnMobDie":
                                this.mpRecover += right;
                                this.mpRecoverProp += 5;
                                break;
                        }
                    }
                    break;
                }
            case "skill":
                if (first_login) {
                    String craft = ii.getEquipAddReqs(itemId, (String) add.getLeft(), "craft");
                    if ((craft == null)) {
                        switch((String) add.getMid()) {
                            case "id":
                                skillid = right;
                                break;
                            case "level":
                                skilllevel = right;
                                break;
                        }
                    }
                }
                break;
            case "hpmpchange":
                switch((String) add.getMid()) {
                    case "hpChangerPerTime":
                        this.recoverHP += right;
                        break;
                    case "mpChangerPerTime":
                        this.recoverMP += right;
                        break;
                }
                break;
            case "statinc":
                {
                    boolean canJobx = false;
                    boolean canLevelx = false;
                    String job = ii.getEquipAddReqs(itemId, (String) add.getLeft(), "job");
                    if (job != null) {
                        if (job.contains(",")) {
                            String[] jobs = job.split(",");
                            for (String x : jobs) {
                                if (chra.getJob() == Integer.parseInt(x)) {
                                    canJobx = true;
                                }
                            }
                        } else if (chra.getJob() == Integer.parseInt(job)) {
                            canJobx = true;
                        }
                    }
                    String level = ii.getEquipAddReqs(itemId, (String) add.getLeft(), "level");
                    if ((level != null) && (chra.getLevel() >= Integer.parseInt(level))) {
                        canLevelx = true;
                    }
                    if (((!canJobx) && (job != null)) || ((!canLevelx) && (level != null))) {
                        continue;
                    }
                    if (itemId == 1142367) {
                        int day = Calendar.getInstance().get(7);
                        if ((day != 1) && (day != 7)) {
                            continue;
                        }
                    }
                    if (((String) add.getMid()).equals("incPAD")) {
                        this.watk += right;
                    } else if (((String) add.getMid()).equals("incMAD")) {
                        this.magic += right;
                    } else if (((String) add.getMid()).equals("incSTR")) {
                        this.localstr += right;
                    } else if (((String) add.getMid()).equals("incDEX")) {
                        this.localdex += right;
                    } else if (((String) add.getMid()).equals("incINT")) {
                        this.localint_ += right;
                    } else if (((String) add.getMid()).equals("incLUK")) {
                        this.localluk += right;
                    } else if (((String) add.getMid()).equals("incJump")) {
                        this.jump += right;
                    } else if (((String) add.getMid()).equals("incMHP")) {
                        localmaxhp_x += right;
                    } else if (((String) add.getMid()).equals("incMMP")) {
                        localmaxmp_x += right;
                    } else if (((String) add.getMid()).equals("incPDD")) {
                        this.wdef += right;
                    } else if (((String) add.getMid()).equals("incMDD")) {
                        this.mdef += right;
                    } else if (((String) add.getMid()).equals("incACC")) {
                        this.accuracy += right;
                    } else if (!((String) add.getMid()).equals("incEVA")) {
                        switch((String) add.getMid()) {
                            case "incSpeed":
                                this.speed += right;
                                break;
                            case "incMMPr":
                                this.percent_mp += right;
                                break;
                        }
                    }
                    break;
                }
        }
    }
    if ((skillid != 0) && (skilllevel != 0)) {
        sData.put(SkillFactory.getSkill(skillid), new SkillEntry((byte) skilllevel, (byte) 0, -1L));
    }
    return new Pair(localmaxhp_x, localmaxmp_x);
}
Example 3
Project: OpenSourceStory-master  File: PlayerStats.java View source code
public Pair<Integer, Integer> handleEquipAdditions(MapleItemInformationProvider ii, MapleCharacter chra, boolean first_login, Map<Skill, SkillEntry> sData, int itemId) {
    List<Triple<String, String, String>> additions = ii.getEquipAdditions(itemId);
    if (additions == null) {
        return null;
    }
    int localmaxhp_x = 0;
    int localmaxmp_x = 0;
    int skillid = 0;
    int skilllevel = 0;
    for (Triple add : additions) {
        if (!((String) add.getMid()).contains("con")) {
            int right = 0;
            try {
                right = Integer.parseInt((String) add.getRight());
            } catch (NumberFormatException fff) {
            }
            String craft;
            String job;
            String level;
            switch((String) add.getLeft()) {
                case "elemboost":
                    craft = ii.getEquipAddReqs(itemId, (String) add.getLeft(), "craft");
                    if ((((String) add.getMid()).equals("elemVol")) && ((craft == null) || ((craft != null) && (chra.getTrait(MapleTrait.MapleTraitType.craft).getLocalTotalExp() >= Integer.parseInt(craft))))) {
                        int value = Integer.parseInt(((String) add.getRight()).substring(1, ((String) add.getRight()).length()));
                        Element key = Element.getFromChar(((String) add.getRight()).charAt(0));
                        if (this.elemBoosts.get(key) != null) {
                            value += ((Integer) this.elemBoosts.get(key)).intValue();
                        }
                        this.elemBoosts.put(key, Integer.valueOf(value));
                    }
                    break;
                case "mobcategory":
                    if (((String) add.getMid()).equals("damage")) {
                        this.dam_r *= (right + 100.0D) / 100.0D;
                        this.bossdam_r += (right + 100.0D) / 100.0D;
                    }
                    break;
                case "critical":
                    boolean canJob = false;
                    boolean canLevel = false;
                    job = ii.getEquipAddReqs(itemId, (String) add.getLeft(), "job");
                    if (job != null) {
                        if (job.contains(",")) {
                            //???
                            String[] strx = job.split(",");
                            for (String x : strx) {
                                if (chra.getJob() == Integer.parseInt(x)) {
                                    canJob = true;
                                }
                            }
                        } else if (chra.getJob() == Integer.parseInt(job)) {
                            canJob = true;
                        }
                    }
                    level = ii.getEquipAddReqs(itemId, (String) add.getLeft(), "level");
                    if ((level != null) && (chra.getLevel() >= Integer.parseInt(level))) {
                        canLevel = true;
                    }
                    if (((job != null) && (canJob)) || ((job == null) && (((level != null) && (canLevel)) || (level == null)))) {
                        switch((String) add.getMid()) {
                            case "prob":
                                this.passive_sharpeye_rate = ((short) (this.passive_sharpeye_rate + right));
                                break;
                            case "damage":
                                this.passive_sharpeye_min_percent = ((short) (this.passive_sharpeye_min_percent + right));
                                this.passive_sharpeye_percent = ((short) (this.passive_sharpeye_percent + right));
                        }
                    }
                    break;
                case "boss":
                    craft = ii.getEquipAddReqs(itemId, (String) add.getLeft(), "craft");
                    if ((((String) add.getMid()).equals("damage")) && ((craft == null) || ((craft != null) && (chra.getTrait(MapleTrait.MapleTraitType.craft).getLocalTotalExp() >= Integer.parseInt(craft))))) {
                        this.bossdam_r *= (right + 100.0D) / 100.0D;
                    }
                    break;
                case "mobdie":
                    craft = ii.getEquipAddReqs(itemId, (String) add.getLeft(), "craft");
                    if ((craft == null) || ((craft != null) && (chra.getTrait(MapleTrait.MapleTraitType.craft).getLocalTotalExp() >= Integer.parseInt(craft)))) {
                        switch((String) add.getMid()) {
                            case "hpIncOnMobDie":
                                this.hpRecover += right;
                                this.hpRecoverProp += 5;
                                break;
                            case "mpIncOnMobDie":
                                this.mpRecover += right;
                                this.mpRecoverProp += 5;
                        }
                    }
                    break;
                case "skill":
                    if (first_login) {
                        craft = ii.getEquipAddReqs(itemId, (String) add.getLeft(), "craft");
                        if ((craft == null) || ((craft != null) && (chra.getTrait(MapleTrait.MapleTraitType.craft).getLocalTotalExp() >= Integer.parseInt(craft)))) {
                            switch((String) add.getMid()) {
                                case "id":
                                    skillid = right;
                                    break;
                                case "level":
                                    skilllevel = right;
                            }
                        }
                    }
                    break;
                case "hpmpchange":
                    switch((String) add.getMid()) {
                        case "hpChangerPerTime":
                            this.recoverHP += right;
                            break;
                        case "mpChangerPerTime":
                            this.recoverMP += right;
                    }
                    break;
                case "statinc":
                    boolean canJobx = false;
                    boolean canLevelx = false;
                    job = ii.getEquipAddReqs(itemId, (String) add.getLeft(), "job");
                    if (job != null) {
                        if (job.contains(",")) {
                            String[] jobs = job.split(",");
                            for (String x : jobs) {
                                if (chra.getJob() == Integer.parseInt(x)) {
                                    canJobx = true;
                                }
                            }
                        } else if (chra.getJob() == Integer.parseInt(job)) {
                            canJobx = true;
                        }
                    }
                    level = ii.getEquipAddReqs(itemId, (String) add.getLeft(), "level");
                    if ((level != null) && (chra.getLevel() >= Integer.parseInt(level))) {
                        canLevelx = true;
                    }
                    if (((canJobx) || (job == null)) && ((canLevelx) || (level == null))) {
                        if (itemId == 1142367) {
                            int wut = Calendar.getInstance().get(7);
                            if ((wut != 1) && (wut != 7)) {
                                break;
                            }
                        } else {
                            switch((String) add.getMid()) {
                                case "incPAD":
                                    this.watk += right;
                                    break;
                                case "incMAD":
                                    this.magic += right;
                                    break;
                                case "incSTR":
                                    this.localstr += right;
                                    break;
                                case "incDEX":
                                    this.localdex += right;
                                    break;
                                case "incINT":
                                    this.localint_ += right;
                                    break;
                                case "incLUK":
                                    this.localluk += right;
                                    break;
                                case "incJump":
                                    this.jump += right;
                                    break;
                                case "incMHP":
                                    localmaxhp_x += right;
                                    break;
                                case "incMMP":
                                    localmaxmp_x += right;
                                    break;
                                case "incPDD":
                                    this.wdef += right;
                                    break;
                                case "incMDD":
                                    this.mdef += right;
                                    break;
                                case "incACC":
                                    this.accuracy += right;
                                    break;
                                case "incEVA":
                                    break;
                                case "incSpeed":
                                    this.speed += right;
                                    break;
                                case "incMMPr":
                                    this.percent_mp += right;
                            }
                        }
                    }
                    break;
            }
        }
    }
    if ((skillid != 0) && (skilllevel != 0)) {
        sData.put(SkillFactory.getSkill(skillid), new SkillEntry((byte) skilllevel, (byte) 0, -1L));
    }
    return new Pair(Integer.valueOf(localmaxhp_x), Integer.valueOf(localmaxmp_x));
}
Example 4
Project: OurStory-master  File: PlayerStats.java View source code
public Pair<Integer, Integer> handleEquipAdditions(MapleItemInformationProvider ii, MapleCharacter chra, boolean first_login, Map<Skill, SkillEntry> sData, int itemId) {
    List<Triple<String, String, String>> additions = ii.getEquipAdditions(itemId);
    if (additions == null) {
        return null;
    }
    int localmaxhp_x = 0;
    int localmaxmp_x = 0;
    int skillid = 0;
    int skilllevel = 0;
    for (Triple add : additions) {
        if (!((String) add.getMid()).contains("con")) {
            int right = 0;
            try {
                right = Integer.parseInt((String) add.getRight());
            } catch (NumberFormatException fff) {
            }
            String craft;
            String job;
            String level;
            switch((String) add.getLeft()) {
                case "elemboost":
                    craft = ii.getEquipAddReqs(itemId, (String) add.getLeft(), "craft");
                    if ((((String) add.getMid()).equals("elemVol")) && ((craft == null) || ((craft != null) && (chra.getTrait(MapleTrait.MapleTraitType.craft).getLocalTotalExp() >= Integer.parseInt(craft))))) {
                        int value = Integer.parseInt(((String) add.getRight()).substring(1, ((String) add.getRight()).length()));
                        Element key = Element.getFromChar(((String) add.getRight()).charAt(0));
                        if (this.elemBoosts.get(key) != null) {
                            value += ((Integer) this.elemBoosts.get(key)).intValue();
                        }
                        this.elemBoosts.put(key, Integer.valueOf(value));
                    }
                    break;
                case "mobcategory":
                    if (((String) add.getMid()).equals("damage")) {
                        this.dam_r *= (right + 100.0D) / 100.0D;
                        this.bossdam_r += (right + 100.0D) / 100.0D;
                    }
                    break;
                case "critical":
                    boolean canJob = false;
                    boolean canLevel = false;
                    job = ii.getEquipAddReqs(itemId, (String) add.getLeft(), "job");
                    if (job != null) {
                        if (job.contains(",")) {
                            //???
                            String[] strx = job.split(",");
                            for (String x : strx) {
                                if (chra.getJob() == Integer.parseInt(x)) {
                                    canJob = true;
                                }
                            }
                        } else if (chra.getJob() == Integer.parseInt(job)) {
                            canJob = true;
                        }
                    }
                    level = ii.getEquipAddReqs(itemId, (String) add.getLeft(), "level");
                    if ((level != null) && (chra.getLevel() >= Integer.parseInt(level))) {
                        canLevel = true;
                    }
                    if (((job != null) && (canJob)) || ((job == null) && (((level != null) && (canLevel)) || (level == null)))) {
                        switch((String) add.getMid()) {
                            case "prob":
                                this.passive_sharpeye_rate = ((short) (this.passive_sharpeye_rate + right));
                                break;
                            case "damage":
                                this.passive_sharpeye_min_percent = ((short) (this.passive_sharpeye_min_percent + right));
                                this.passive_sharpeye_percent = ((short) (this.passive_sharpeye_percent + right));
                        }
                    }
                    break;
                case "boss":
                    craft = ii.getEquipAddReqs(itemId, (String) add.getLeft(), "craft");
                    if ((((String) add.getMid()).equals("damage")) && ((craft == null) || ((craft != null) && (chra.getTrait(MapleTrait.MapleTraitType.craft).getLocalTotalExp() >= Integer.parseInt(craft))))) {
                        this.bossdam_r *= (right + 100.0D) / 100.0D;
                    }
                    break;
                case "mobdie":
                    craft = ii.getEquipAddReqs(itemId, (String) add.getLeft(), "craft");
                    if ((craft == null) || ((craft != null) && (chra.getTrait(MapleTrait.MapleTraitType.craft).getLocalTotalExp() >= Integer.parseInt(craft)))) {
                        switch((String) add.getMid()) {
                            case "hpIncOnMobDie":
                                this.hpRecover += right;
                                this.hpRecoverProp += 5;
                                break;
                            case "mpIncOnMobDie":
                                this.mpRecover += right;
                                this.mpRecoverProp += 5;
                        }
                    }
                    break;
                case "skill":
                    if (first_login) {
                        craft = ii.getEquipAddReqs(itemId, (String) add.getLeft(), "craft");
                        if ((craft == null) || ((craft != null) && (chra.getTrait(MapleTrait.MapleTraitType.craft).getLocalTotalExp() >= Integer.parseInt(craft)))) {
                            switch((String) add.getMid()) {
                                case "id":
                                    skillid = right;
                                    break;
                                case "level":
                                    skilllevel = right;
                            }
                        }
                    }
                    break;
                case "hpmpchange":
                    switch((String) add.getMid()) {
                        case "hpChangerPerTime":
                            this.recoverHP += right;
                            break;
                        case "mpChangerPerTime":
                            this.recoverMP += right;
                    }
                    break;
                case "statinc":
                    boolean canJobx = false;
                    boolean canLevelx = false;
                    job = ii.getEquipAddReqs(itemId, (String) add.getLeft(), "job");
                    if (job != null) {
                        if (job.contains(",")) {
                            String[] jobs = job.split(",");
                            for (String x : jobs) {
                                if (chra.getJob() == Integer.parseInt(x)) {
                                    canJobx = true;
                                }
                            }
                        } else if (chra.getJob() == Integer.parseInt(job)) {
                            canJobx = true;
                        }
                    }
                    level = ii.getEquipAddReqs(itemId, (String) add.getLeft(), "level");
                    if ((level != null) && (chra.getLevel() >= Integer.parseInt(level))) {
                        canLevelx = true;
                    }
                    if (((canJobx) || (job == null)) && ((canLevelx) || (level == null))) {
                        if (itemId == 1142367) {
                            int wut = Calendar.getInstance().get(7);
                            if ((wut != 1) && (wut != 7)) {
                                break;
                            }
                        } else {
                            switch((String) add.getMid()) {
                                case "incPAD":
                                    this.watk += right;
                                    break;
                                case "incMAD":
                                    this.magic += right;
                                    break;
                                case "incSTR":
                                    this.localstr += right;
                                    break;
                                case "incDEX":
                                    this.localdex += right;
                                    break;
                                case "incINT":
                                    this.localint_ += right;
                                    break;
                                case "incLUK":
                                    this.localluk += right;
                                    break;
                                case "incJump":
                                    this.jump += right;
                                    break;
                                case "incMHP":
                                    localmaxhp_x += right;
                                    break;
                                case "incMMP":
                                    localmaxmp_x += right;
                                    break;
                                case "incPDD":
                                    this.wdef += right;
                                    break;
                                case "incMDD":
                                    this.mdef += right;
                                    break;
                                case "incACC":
                                    this.accuracy += right;
                                    break;
                                case "incEVA":
                                    break;
                                case "incSpeed":
                                    this.speed += right;
                                    break;
                                case "incMMPr":
                                    this.percent_mp += right;
                            }
                        }
                    }
                    break;
            }
        }
    }
    if ((skillid != 0) && (skilllevel != 0)) {
        sData.put(SkillFactory.getSkill(skillid), new SkillEntry((byte) skilllevel, (byte) 0, -1L));
    }
    return new Pair(Integer.valueOf(localmaxhp_x), Integer.valueOf(localmaxmp_x));
}
Example 5
Project: ZZMS-master  File: PlayerStats.java View source code
public Pair<Integer, Integer> handleEquipAdditions(MapleItemInformationProvider ii, MapleCharacter chra, boolean first_login, Map<Skill, SkillEntry> sData, final int itemId) {
    final List<Triple<String, String, String>> additions = ii.getEquipAdditions(itemId);
    if (additions == null) {
        return null;
    }
    int localmaxhp_x = 0, localmaxmp_x = 0;
    int skillid = 0, skilllevel = 0;
    String craft, job, level;
    for (final Triple<String, String, String> add : additions) {
        if (add.getMid().contains("con")) {
            continue;
        }
        final int right = Integer.parseInt(add.getRight());
        switch(add.getLeft()) {
            case "elemboost":
                craft = ii.getEquipAddReqs(itemId, add.getLeft(), "craft");
                if (add.getMid().equals("elemVol") && (craft == null || craft != null && chra.getTrait(MapleTraitType.craft).getLocalTotalExp() >= Integer.parseInt(craft))) {
                    int value = Integer.parseInt(add.getRight().substring(1, add.getRight().length()));
                    final Element key = Element.getFromChar(add.getRight().charAt(0));
                    if (elemBoosts.get(key) != null) {
                        value += elemBoosts.get(key);
                    }
                    elemBoosts.put(key, value);
                }
                break;
            case //skip the category, thinkings too expensive to have yet another Map<Integer, Integer> for damage calculations
            "mobcategory":
                if (add.getMid().equals("damage")) {
                    dam_r *= (right + 100.0) / 100.0;
                    bossdam_r += (right + 100.0) / 100.0;
                }
                break;
            case // lv critical lvl?
            "critical":
                boolean canJob = false, canLevel = false;
                job = ii.getEquipAddReqs(itemId, add.getLeft(), "job");
                if (job != null) {
                    if (job.contains(",")) {
                        final String[] jobs = job.split(",");
                        for (final String x : jobs) {
                            if (chra.getJob() == Integer.parseInt(x)) {
                                canJob = true;
                            }
                        }
                    } else {
                        if (chra.getJob() == Integer.parseInt(job)) {
                            canJob = true;
                        }
                    }
                }
                level = ii.getEquipAddReqs(itemId, add.getLeft(), "level");
                if (level != null) {
                    if (chra.getLevel() >= Integer.parseInt(level)) {
                        canLevel = true;
                    }
                }
                if ((job != null && canJob || job == null) && (level != null && canLevel || level == null)) {
                    switch(add.getMid()) {
                        case "prob":
                            passive_sharpeye_rate += right;
                            break;
                        case "damage":
                            passive_sharpeye_min_percent += right;
                            //???CONFIRM - not sure if this is max or minCritDmg
                            passive_sharpeye_max_percent += right;
                            break;
                    }
                }
                break;
            case // ignore prob, just add
            "boss":
                craft = ii.getEquipAddReqs(itemId, add.getLeft(), "craft");
                if (add.getMid().equals("damage") && (craft == null || craft != null && chra.getTrait(MapleTraitType.craft).getLocalTotalExp() >= Integer.parseInt(craft))) {
                    bossdam_r *= (right + 100.0) / 100.0;
                }
                break;
            case // lv, hpIncRatioOnMobDie, hpRatioProp, mpIncRatioOnMobDie, mpRatioProp, modify =D, don't need mob to die
            "mobdie":
                craft = ii.getEquipAddReqs(itemId, add.getLeft(), "craft");
                if ((craft == null || craft != null && chra.getTrait(MapleTraitType.craft).getLocalTotalExp() >= Integer.parseInt(craft))) {
                    switch(add.getMid()) {
                        case "hpIncOnMobDie":
                            hpRecover += right;
                            hpRecoverProp += 5;
                            break;
                        case "mpIncOnMobDie":
                            mpRecover += right;
                            mpRecoverProp += 5;
                            break;
                    }
                }
                break;
            case // all these are additional skills
            "skill":
                if (first_login) {
                    craft = ii.getEquipAddReqs(itemId, add.getLeft(), "craft");
                    if ((craft == null || craft != null && chra.getTrait(MapleTraitType.craft).getLocalTotalExp() >= Integer.parseInt(craft))) {
                        switch(add.getMid()) {
                            case "id":
                                skillid = right;
                                break;
                            case "level":
                                skilllevel = right;
                                break;
                        }
                    }
                }
                break;
            case "hpmpchange":
                switch(add.getMid()) {
                    case "hpChangerPerTime":
                        recoverHP += right;
                        break;
                    case "mpChangerPerTime":
                        recoverMP += right;
                        break;
                }
                break;
            case "statinc":
                boolean canJobx = false, canLevelx = false;
                job = ii.getEquipAddReqs(itemId, add.getLeft(), "job");
                if (job != null) {
                    if (job.contains(",")) {
                        final String[] jobs = job.split(",");
                        for (final String x : jobs) {
                            if (chra.getJob() == Integer.parseInt(x)) {
                                canJobx = true;
                            }
                        }
                    } else if (chra.getJob() == Integer.parseInt(job)) {
                        canJobx = true;
                    }
                }
                level = ii.getEquipAddReqs(itemId, add.getLeft(), "level");
                if (level != null && chra.getLevel() >= Integer.parseInt(level)) {
                    canLevelx = true;
                }
                if ((!canJobx && job != null) || (!canLevelx && level != null)) {
                    continue;
                }
                if (itemId == 1142367) {
                    final int day = Calendar.getInstance().get(Calendar.DAY_OF_WEEK);
                    if (day != 1 && day != 7) {
                        continue;
                    }
                }
                switch(add.getMid()) {
                    case "incPAD":
                        watk += right;
                        break;
                    case "incMAD":
                        magic += right;
                        break;
                    case "incSTR":
                        localstr += right;
                        break;
                    case "incDEX":
                        localdex += right;
                        break;
                    case "incINT":
                        localint_ += right;
                        break;
                    case "incLUK":
                        localluk += right;
                        break;
                    case "incJump":
                        jump += right;
                        break;
                    case "incMHP":
                        localmaxhp_x += right;
                        break;
                    case "incMMP":
                        localmaxmp_x += right;
                        break;
                    case "incPDD":
                        wdef += right;
                        break;
                    case "incMDD":
                        mdef += right;
                        break;
                    case "incACC":
                        accuracy += right;
                        break;
                    case "incEVA":
                        break;
                    case "incSpeed":
                        speed += right;
                        break;
                    case "incMMPr":
                        percent_mp += right;
                        break;
                }
                break;
        }
    }
    if (skillid != 0 && skilllevel != 0) {
        sData.put(SkillFactory.getSkill(skillid), new SkillEntry((byte) skilllevel, (byte) 0, -1));
    }
    return new Pair<>(localmaxhp_x, localmaxmp_x);
}
Example 6
Project: Acernis-v144-master  File: PlayerStats.java View source code
public Pair<Integer, Integer> handleEquipAdditions(MapleItemInformationProvider ii, MapleCharacter chra, boolean first_login, Map<Skill, SkillEntry> sData, final int itemId) {
    final List<Triple<String, String, String>> additions = ii.getEquipAdditions(itemId);
    if (additions == null) {
        return null;
    }
    int localmaxhp_x = 0, localmaxmp_x = 0;
    int skillid = 0, skilllevel = 0;
    String craft, job, level;
    for (final Triple<String, String, String> add : additions) {
        if (add.getMid().contains("con")) {
            continue;
        }
        final int right = Integer.parseInt(add.getRight());
        switch(add.getLeft()) {
            case "elemboost":
                craft = ii.getEquipAddReqs(itemId, add.getLeft(), "craft");
                if (add.getMid().equals("elemVol") && (craft == null || craft != null && chra.getTrait(MapleTraitType.craft).getLocalTotalExp() >= Integer.parseInt(craft))) {
                    int value = Integer.parseInt(add.getRight().substring(1, add.getRight().length()));
                    final Element key = Element.getFromChar(add.getRight().charAt(0));
                    if (elemBoosts.get(key) != null) {
                        value += elemBoosts.get(key);
                    }
                    elemBoosts.put(key, value);
                }
                break;
            case //skip the category, thinkings too expensive to have yet another Map<Integer, Integer> for damage calculations
            "mobcategory":
                if (add.getMid().equals("damage")) {
                    dam_r *= (right + 100.0) / 100.0;
                    bossdam_r += (right + 100.0) / 100.0;
                }
                break;
            case // lv critical lvl?
            "critical":
                boolean canJob = false, canLevel = false;
                job = ii.getEquipAddReqs(itemId, add.getLeft(), "job");
                if (job != null) {
                    if (job.contains(",")) {
                        final String[] jobs = job.split(",");
                        for (final String x : jobs) {
                            if (chra.getJob() == Integer.parseInt(x)) {
                                canJob = true;
                            }
                        }
                    } else {
                        if (chra.getJob() == Integer.parseInt(job)) {
                            canJob = true;
                        }
                    }
                }
                level = ii.getEquipAddReqs(itemId, add.getLeft(), "level");
                if (level != null) {
                    if (chra.getLevel() >= Integer.parseInt(level)) {
                        canLevel = true;
                    }
                }
                if ((job != null && canJob || job == null) && (level != null && canLevel || level == null)) {
                    switch(add.getMid()) {
                        case "prob":
                            crit_rate += right;
                            break;
                        case "damage":
                            passive_sharpeye_min_percent += right;
                            //???CONFIRM - not sure if this is max or minCritDmg
                            passive_sharpeye_percent += right;
                            break;
                    }
                }
                break;
            case // ignore prob, just add
            "boss":
                craft = ii.getEquipAddReqs(itemId, add.getLeft(), "craft");
                if (add.getMid().equals("damage") && (craft == null || craft != null && chra.getTrait(MapleTraitType.craft).getLocalTotalExp() >= Integer.parseInt(craft))) {
                    bossdam_r *= (right + 100.0) / 100.0;
                }
                break;
            case // lv, hpIncRatioOnMobDie, hpRatioProp, mpIncRatioOnMobDie, mpRatioProp, modify =D, don't need mob to die
            "mobdie":
                craft = ii.getEquipAddReqs(itemId, add.getLeft(), "craft");
                if ((craft == null || craft != null && chra.getTrait(MapleTraitType.craft).getLocalTotalExp() >= Integer.parseInt(craft))) {
                    switch(add.getMid()) {
                        case "hpIncOnMobDie":
                            hpRecover += right;
                            hpRecoverProp += 5;
                            break;
                        case "mpIncOnMobDie":
                            mpRecover += right;
                            mpRecoverProp += 5;
                            break;
                    }
                }
                break;
            case // all these are additional skills
            "skill":
                if (first_login) {
                    craft = ii.getEquipAddReqs(itemId, add.getLeft(), "craft");
                    if ((craft == null || craft != null && chra.getTrait(MapleTraitType.craft).getLocalTotalExp() >= Integer.parseInt(craft))) {
                        switch(add.getMid()) {
                            case "id":
                                skillid = right;
                                break;
                            case "level":
                                skilllevel = right;
                                break;
                        }
                    }
                }
                break;
            case "hpmpchange":
                switch(add.getMid()) {
                    case "hpChangerPerTime":
                        recoverHP += right;
                        break;
                    case "mpChangerPerTime":
                        recoverMP += right;
                        break;
                }
                break;
            case "statinc":
                boolean canJobx = false, canLevelx = false;
                job = ii.getEquipAddReqs(itemId, add.getLeft(), "job");
                if (job != null) {
                    if (job.contains(",")) {
                        final String[] jobs = job.split(",");
                        for (final String x : jobs) {
                            if (chra.getJob() == Integer.parseInt(x)) {
                                canJobx = true;
                            }
                        }
                    } else if (chra.getJob() == Integer.parseInt(job)) {
                        canJobx = true;
                    }
                }
                level = ii.getEquipAddReqs(itemId, add.getLeft(), "level");
                if (level != null && chra.getLevel() >= Integer.parseInt(level)) {
                    canLevelx = true;
                }
                if ((!canJobx && job != null) || (!canLevelx && level != null)) {
                    continue;
                }
                if (itemId == 1142367) {
                    final int day = Calendar.getInstance().get(Calendar.DAY_OF_WEEK);
                    if (day != 1 && day != 7) {
                        continue;
                    }
                }
                switch(add.getMid()) {
                    case "incPAD":
                        watk += right;
                        break;
                    case "incMAD":
                        magic += right;
                        break;
                    case "incSTR":
                        localstr += right;
                        break;
                    case "incDEX":
                        localdex += right;
                        break;
                    case "incINT":
                        localint_ += right;
                        break;
                    case "incLUK":
                        localluk += right;
                        break;
                    case "incJump":
                        jump += right;
                        break;
                    case "incMHP":
                        localmaxhp_x += right;
                        break;
                    case "incMMP":
                        localmaxmp_x += right;
                        break;
                    case "incPDD":
                        wdef += right;
                        break;
                    case "incMDD":
                        mdef += right;
                        break;
                    case "incACC":
                        accuracy += right;
                        break;
                    case "incEVA":
                        break;
                    case "incSpeed":
                        speed += right;
                        break;
                    case "incMMPr":
                        percent_mp += right;
                        break;
                }
                break;
        }
    }
    if (skillid != 0 && skilllevel != 0) {
        sData.put(SkillFactory.getSkill(skillid), new SkillEntry((byte) skilllevel, (byte) 0, -1));
    }
    return new Pair<>(localmaxhp_x, localmaxmp_x);
}