private static final boolean check(MapleCharacter chr, MerchItemPackage pack) { if (chr.getMeso() + pack.getMesos() < 0L) { return false; } byte eq = 0; byte use = 0; byte setup = 0; byte etc = 0; byte cash = 0; for (Item item : pack.getItems()) { MapleInventoryType invtype = GameConstants.getInventoryType(item.getItemId()); if (invtype == MapleInventoryType.EQUIP) { eq = (byte) (eq + 1); } else if (invtype == MapleInventoryType.USE) { use = (byte) (use + 1); } else if (invtype == MapleInventoryType.SETUP) { setup = (byte) (setup + 1); } else if (invtype == MapleInventoryType.ETC) { etc = (byte) (etc + 1); } else if (invtype == MapleInventoryType.CASH) { cash = (byte) (cash + 1); } } if ((chr.getInventory(MapleInventoryType.EQUIP).getNumFreeSlot() < eq) || (chr.getInventory(MapleInventoryType.USE).getNumFreeSlot() < use) || (chr.getInventory(MapleInventoryType.SETUP).getNumFreeSlot() < setup) || (chr.getInventory(MapleInventoryType.ETC).getNumFreeSlot() < etc) || (chr.getInventory(MapleInventoryType.CASH).getNumFreeSlot() < cash)) { return false; } return true; }
public static void CreateChar(LittleEndianAccessor slea, MapleClient c) { String name = slea.readMapleAsciiString(); slea.skip(4); final JobType jobType = JobType.getByType( slea .readInt()); // BIGBANG: 0 = Resistance, 1 = Adventurer, 2 = Cygnus, 3 = Aran, 4 = // Evan, 5 = Mercedes final short subCategory = slea.readShort(); // whether dual blade = 1 or adventurer = 0 final byte gender = slea.readByte(); byte skinColor = slea.readByte(); // 01 int hairColor = 0; slea.skip(1); boolean mercedes = (jobType == JobType.Mercedes); boolean demon = (jobType == JobType.Demon); boolean adventurer = (jobType == JobType.Adventurer); int face = slea.readInt(); int hair = slea.readInt(); final int demonMark = demon ? slea.readInt() : 0; int top = slea.readInt(); int bottom = (mercedes || demon || adventurer) ? 0 : slea.readInt(); int shoes = slea.readInt(); int weapon = slea.readInt(); int shield = demon ? slea.readInt() : (mercedes ? 1352000 : 0); MapleCharacter newchar = MapleCharacter.getDefault(c); newchar.setWorld((byte) c.getWorld()); newchar.setFace(face); newchar.setHair(hair + hairColor); newchar.setGender(gender); newchar.setName(name); newchar.setSkinColor(skinColor); newchar.setDemonMarking(demonMark); newchar.setSubcategory(subCategory); MapleInventory equip = newchar.getInventory(MapleInventoryType.EQUIPPED); Item eq_top = MapleItemInformationProvider.getInstance().getEquipById(top); eq_top.setPosition((byte) -5); equip.addFromDB(eq_top); Item eq_bottom = MapleItemInformationProvider.getInstance().getEquipById(bottom); eq_bottom.setPosition((byte) -6); Item eq_shoes = MapleItemInformationProvider.getInstance().getEquipById(shoes); eq_shoes.setPosition((byte) -7); equip.addFromDB(eq_shoes); Item eq_weapon = MapleItemInformationProvider.getInstance().getEquipById(weapon); eq_weapon.setPosition((byte) -11); equip.addFromDB(eq_weapon); if (MapleCharacterUtil.canCreateChar(name, false) && !LoginInformationProvider.getInstance().isForbiddenName(name)) { MapleCharacter.saveNewCharToDB(newchar, (short) 0); c.getSession().write(LoginPacket.addNewCharEntry(newchar, true)); c.createdChar(newchar.getId()); } else { c.getSession().write(LoginPacket.addNewCharEntry(newchar, false)); } newchar = null; }
private static boolean check(MapleCharacter chr, List<MaplePlayerShopItem> items) { byte eq = 0, use = 0, setup = 0, etc = 0, cash = 0; List<MapleInventoryType> li = new LinkedList<MapleInventoryType>(); for (MaplePlayerShopItem item : items) { final MapleInventoryType invtype = MapleItemInformationProvider.getInstance().getInventoryType(item.getItem().getItemId()); if (!li.contains(invtype)) { li.add(invtype); } if (invtype == MapleInventoryType.EQUIP) { eq++; } else if (invtype == MapleInventoryType.USE) { use++; } else if (invtype == MapleInventoryType.SETUP) { setup++; } else if (invtype == MapleInventoryType.ETC) { etc++; } else if (invtype == MapleInventoryType.CASH) { cash++; } } for (MapleInventoryType mit : li) { if (mit == MapleInventoryType.EQUIP) { if (chr.getInventory(MapleInventoryType.EQUIP).getNumFreeSlot() <= eq) { return false; } } else if (mit == MapleInventoryType.USE) { if (chr.getInventory(MapleInventoryType.USE).getNumFreeSlot() <= use) { return false; } } else if (mit == MapleInventoryType.SETUP) { if (chr.getInventory(MapleInventoryType.SETUP).getNumFreeSlot() <= setup) { return false; } } else if (mit == MapleInventoryType.ETC) { if (chr.getInventory(MapleInventoryType.ETC).getNumFreeSlot() <= etc) { return false; } } else if (mit == MapleInventoryType.CASH) { if (chr.getInventory(MapleInventoryType.CASH).getNumFreeSlot() <= cash) { return false; } } } return true; }
public static boolean addRing(final MapleCharacter chr, final int Id, final int ringId) { MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance(); MapleInventoryType type = ii.getInventoryType(Id); IItem nEquip = ii.getEquipById(Id, ringId); short newSlot = chr.getInventory(type).addItem(nEquip); if (newSlot == -1) { return false; } chr.getClient().announce(InventoryFactory.addInventorySlot(type, nEquip)); return true; }
private boolean fitsInInventory() { MapleItemInformationProvider mii = MapleItemInformationProvider.getInstance(); Map<MapleInventoryType, Integer> neededSlots = new LinkedHashMap<MapleInventoryType, Integer>(); for (IItem item : exchangeItems) { MapleInventoryType type = mii.getInventoryType(item.getItemId()); if (neededSlots.get(type) == null) { neededSlots.put(type, 1); } else { neededSlots.put(type, neededSlots.get(type) + 1); } } for (Map.Entry<MapleInventoryType, Integer> entry : neededSlots.entrySet()) { if (chr.getInventory(entry.getKey()).isFull(entry.getValue() - 1)) { return false; } } return true; }
/** * 可以创建定时技能 * * @param chr * @param numTimes * @param hurt * @param now */ public static void handleCooldowns(MapleCharacter chr, int numTimes, boolean hurt, long now) { if (chr == null) { return; } if (chr.getCooldownSize() > 0) { for (MapleCoolDownValueHolder m : chr.getCooldowns()) { if (m.startTime + m.length < now) { int skillId = m.skillId; chr.removeCooldown(skillId); chr.getClient().getSession().write(MaplePacketCreator.skillCooldown(skillId, 0)); } } } if (chr.isAlive()) { if (((chr.getJob() == 131) || (chr.getJob() == 132)) && (chr.canBlood(now))) { chr.doDragonBlood(); } if (chr.canRecover(now)) { chr.doRecovery(); } if (chr.canHPRecover(now)) { chr.addHP((int) chr.getStat().getHealHP()); } if (chr.canMPRecover(now)) { chr.addMP((int) chr.getStat().getHealMP()); if ((chr.getJob() == 3111) || (chr.getJob() == 3112)) { chr.addDemonMp((int) chr.getStat().getHealMP()); } } if (chr.canFairy(now)) { chr.doFairy(); } if (chr.canFish(now)) { chr.doFish(now); } if (chr.canDOT(now)) { chr.doDOT(); } if (chr.canExpiration(now)) { chr.expirationTask(); } } if (chr.getDiseaseSize() > 0) { for (MapleDiseaseValueHolder m : chr.getAllDiseases()) { if ((m != null) && (m.startTime + m.length < now)) { chr.dispelDebuff(m.disease); } } } if ((numTimes % 7 == 0) && (chr.getMount() != null) && (chr.getMount().canTire(now))) { chr.getMount().increaseFatigue(); } if (numTimes % 13 == 0) { chr.doFamiliarSchedule(now); for (MaplePet pet : chr.getSummonedPets()) { if ((pet.getPetItemId() == 5000054) && (pet.getSecondsLeft() > 0)) { pet.setSecondsLeft(pet.getSecondsLeft() - 1); if (pet.getSecondsLeft() <= 0) { chr.unequipSpawnPet(pet, true, true); return; } } int newFullness = pet.getFullness() - PetDataFactory.getHunger(pet.getPetItemId()); if (newFullness <= 5) { pet.setFullness(15); chr.unequipSpawnPet(pet, true, true); } else { pet.setFullness(newFullness); chr.getClient() .getSession() .write( PetPacket.updatePet( pet, chr.getInventory(MapleInventoryType.CASH).getItem(pet.getInventoryPosition()), false)); } } } if ((hurt) && (chr.isAlive())) { if (chr.getInventory(MapleInventoryType.EQUIPPED).findById(chr.getMap().getHPDecProtect()) == null) { if ((chr.getMapId() == 749040100) && (chr.getInventory(MapleInventoryType.CASH).findById(5451000) == null)) { chr.addHP(-chr.getMap().getHPDec()); } else if (chr.getMapId() != 749040100) { chr.addHP(-(chr.getMap().getHPDec())); } } } }
public static final void CreateUltimate(final LittleEndianAccessor slea, final MapleClient c) { if (!c.isLoggedIn() || c.getPlayer() == null || c.getPlayer().getLevel() < 120 || c.getPlayer().getMapId() != 130000000 || c.getPlayer().getQuestStatus(20734) != 0 || c.getPlayer().getQuestStatus(20616) != 2 || !GameConstants.isKOC(c.getPlayer().getJob()) || !c.canMakeCharacter(c.getPlayer().getWorld())) { c.getPlayer().dropMessage(1, "You have no character slots."); c.getSession().write(CField.createUltimate(0)); return; } System.out.println(slea.toString()); final String name = slea.readMapleAsciiString(); final int job = slea.readInt(); // job ID final int face = slea.readInt(); final int hair = slea.readInt(); final int hat = slea.readInt(); final int top = slea.readInt(); final int glove = slea.readInt(); final int shoes = slea.readInt(); final int weapon = slea.readInt(); final byte gender = c.getPlayer().getGender(); JobType jobType = JobType.Adventurer; // if (!LoginInformationProvider.getInstance().isEligibleItem(gender, 0, jobType.type, face) || // !LoginInformationProvider.getInstance().isEligibleItem(gender, 1, jobType.type, hair)) { // c.getPlayer().dropMessage(1, "An error occurred."); // c.getSession().write(CField.createUltimate(0)); // return; // } jobType = JobType.UltimateAdventurer; MapleCharacter newchar = MapleCharacter.getDefault(c, jobType); newchar.setJob(job); newchar.setWorld((byte) c.getPlayer().getWorld()); newchar.setFace(face); newchar.setHair(hair); newchar.setGender(gender); newchar.setName(name); newchar.setSkinColor((byte) 3); // troll newchar.setLevel((short) 50); newchar.getStat().str = (short) 4; newchar.getStat().dex = (short) 4; newchar.getStat().int_ = (short) 4; newchar.getStat().luk = (short) 4; newchar.setRemainingAp((short) 254); // 49*5 + 25 - 16 newchar.setRemainingSp( job / 100 == 2 ? 128 : 122); // 2 from job advancements. 120 from leveling. (mages get +6) newchar.getStat().maxhp += 150; // Beginner 10 levels newchar.getStat().maxmp += 125; newchar.getStat().hp += 150; // Beginner 10 levels newchar.getStat().mp += 125; switch (job) { case 110: case 120: case 130: newchar.getStat().maxhp += 600; // Job Advancement newchar.getStat().maxhp += 2000; // Levelup 40 times newchar.getStat().maxmp += 200; newchar.getStat().hp += 600; // Job Advancement newchar.getStat().hp += 2000; // Levelup 40 times newchar.getStat().mp += 200; break; case 210: case 220: case 230: newchar.getStat().maxmp += 600; newchar.getStat().maxhp += 500; // Levelup 40 times newchar.getStat().maxmp += 2000; newchar.getStat().mp += 600; newchar.getStat().hp += 500; // Levelup 40 times newchar.getStat().mp += 2000; break; case 310: case 320: case 410: case 420: case 520: newchar.getStat().maxhp += 500; newchar.getStat().maxmp += 250; newchar.getStat().maxhp += 900; // Levelup 40 times newchar.getStat().maxmp += 600; newchar.getStat().maxhp += 500; newchar.getStat().mp += 250; newchar.getStat().hp += 900; // Levelup 40 times newchar.getStat().mp += 600; break; case 510: newchar.getStat().maxhp += 500; newchar.getStat().maxmp += 250; newchar.getStat().maxhp += 450; // Levelup 20 times newchar.getStat().maxmp += 300; newchar.getStat().maxhp += 800; // Levelup 20 times newchar.getStat().maxmp += 400; newchar.getStat().hp += 500; newchar.getStat().mp += 250; newchar.getStat().hp += 450; // Levelup 20 times newchar.getStat().mp += 300; newchar.getStat().hp += 800; // Levelup 20 times newchar.getStat().mp += 400; break; default: return; } for (int i = 2490; i < 2507; i++) { newchar.setQuestAdd(MapleQuest.getInstance(i), (byte) 2, null); } newchar.setQuestAdd(MapleQuest.getInstance(29947), (byte) 2, null); newchar.setQuestAdd( MapleQuest.getInstance(GameConstants.ULT_EXPLORER), (byte) 0, c.getPlayer().getName()); final Map<Skill, SkillEntry> ss = new HashMap<>(); ss.put(SkillFactory.getSkill(1074 + (job / 100)), new SkillEntry((byte) 5, (byte) 5, -1)); ss.put(SkillFactory.getSkill(1195 + (job / 100)), new SkillEntry((byte) 5, (byte) 5, -1)); ss.put(SkillFactory.getSkill(80), new SkillEntry((byte) 1, (byte) 1, -1)); newchar.changeSkillLevel_Skip(ss, false); final MapleItemInformationProvider li = MapleItemInformationProvider.getInstance(); int[] items = new int[] { 1142257, hat, top, shoes, glove, weapon, hat + 1, top + 1, shoes + 1, glove + 1, weapon + 1 }; // brilliant = fine+1 for (byte i = 0; i < items.length; i++) { Item item = li.getEquipById(items[i]); item.setPosition((byte) (i + 1)); newchar.getInventory(MapleInventoryType.EQUIP).addFromDB(item); } newchar .getInventory(MapleInventoryType.USE) .addItem(new Item(2000004, (byte) 0, (short) 100, (byte) 0)); newchar .getInventory(MapleInventoryType.USE) .addItem(new Item(2000004, (byte) 0, (short) 100, (byte) 0)); c.getPlayer().fakeRelog(); if (MapleCharacterUtil.canCreateChar(name, c.isGm()) && (!LoginInformationProvider.getInstance().isForbiddenName(name) || c.isGm())) { MapleCharacter.saveNewCharToDB(newchar, jobType, (short) 0); MapleQuest.getInstance(20734).forceComplete(c.getPlayer(), 1101000); c.getSession().write(CField.createUltimate(1)); } else { c.getSession().write(CField.createUltimate(0)); } }
public static void CreateChar(final LittleEndianAccessor slea, final MapleClient c) { if (!c.isLoggedIn()) { c.getSession().close(); return; } final String name = slea.readMapleAsciiString(); final JobType jobType = JobType.getByType( slea.readInt()); // BIGBANG: 0 = Resistance, 1 = Adventurer, 2 = Cygnus, 3 = Aran, 4 = // Evan, 5 = mercedes final short db = slea.readShort(); // whether dual blade = 1 or adventurer = 0 final byte gender = slea.readByte(); // ??idk corresponds with the thing in addCharStats byte skinColor = slea.readByte(); // 01 int hairColor = 0; final byte unk2 = slea.readByte(); // 08 final boolean mercedes = (jobType == JobType.Mercedes); final boolean demon = (jobType == JobType.Demon); final boolean mihile = (jobType == JobType.Mihile); boolean jettPhantom = (jobType == LoginInformationProvider.JobType.Jett) || (jobType == LoginInformationProvider.JobType.Phantom) || (jobType == LoginInformationProvider.JobType.DualBlade); final int face = slea.readInt(); final int hair = slea.readInt(); if (!mercedes && !mihile && !demon && !jettPhantom) { // mercedes/demon dont need hair color since its already in the hair hairColor = slea.readInt(); skinColor = (byte) slea.readInt(); } final int demonMark = demon ? slea.readInt() : 0; final int top = (mihile) ? 0 : slea.readInt(); final int bottom = (mihile) ? 0 : slea.readInt(); final int shoes = (mihile) ? 0 : slea.readInt(); final int weapon = jobType == LoginInformationProvider.JobType.Phantom ? 1362046 : mercedes ? 1522038 : (mihile || demon) ? 0 : slea.readInt(); int shield = jobType == LoginInformationProvider.JobType.Phantom ? 1352100 : jobType == LoginInformationProvider.JobType.Mihile ? 1098000 : mercedes ? 1352000 : demon ? slea.readInt() : 0; MapleCharacter newchar = MapleCharacter.getDefault(c, jobType); newchar.setWorld((byte) c.getWorld()); newchar.setFace(face); newchar.setHair(hair + hairColor); newchar.setGender(gender); newchar.setName(name); newchar.setSkinColor(skinColor); newchar.setDemonMarking(demonMark); final MapleItemInformationProvider li = MapleItemInformationProvider.getInstance(); final MapleInventory equip = newchar.getInventory(MapleInventoryType.EQUIPPED); Item item = li.getEquipById(top); item.setPosition((byte) -5); equip.addFromDB(item); if (bottom > 0) { // resistance have overall item = li.getEquipById(bottom); item.setPosition((short) (byte) (jettPhantom ? -9 : -6)); equip.addFromDB(item); } item = li.getEquipById(shoes); item.setPosition((byte) -7); equip.addFromDB(item); item = li.getEquipById(weapon); item.setPosition((byte) -11); equip.addFromDB(item); if (shield > 0) { item = li.getEquipById(shield); item.setPosition((byte) -10); equip.addFromDB(item); } newchar .getInventory(MapleInventoryType.USE) .addItem(new Item(2000013, (byte) 0, (short) 100, (byte) 0)); newchar .getInventory(MapleInventoryType.USE) .addItem(new Item(2000014, (byte) 0, (short) 100, (byte) 0)); // blue/red pots switch (jobType) { case Resistance: // Resistance newchar .getInventory(MapleInventoryType.ETC) .addItem(new Item(4161001, (byte) 0, (short) 1, (byte) 0)); final Map<Skill, SkillEntry> ss = new HashMap<>(); ss.put(SkillFactory.getSkill(80001152), new SkillEntry((byte) 1, (byte) 1, -1)); newchar.changeSkillLevel_Skip(ss, false); break; case Adventurer: // Adventurer newchar .getInventory(MapleInventoryType.ETC) .addItem(new Item(4161001, (byte) 0, (short) 1, (byte) 0)); final Map<Skill, SkillEntry> ss1 = new HashMap<>(); ss1.put(SkillFactory.getSkill(80001152), new SkillEntry((byte) 1, (byte) 1, -1)); newchar.changeSkillLevel_Skip(ss1, false); break; case Cygnus: // Cygnus newchar .getInventory(MapleInventoryType.ETC) .addItem(new Item(4161047, (byte) 0, (short) 1, (byte) 0)); newchar.setQuestAdd(MapleQuest.getInstance(20022), (byte) 1, "1"); newchar.setQuestAdd(MapleQuest.getInstance(20010), (byte) 1, null); // >_>_>_> ugh final Map<Skill, SkillEntry> ss2 = new HashMap<>(); ss2.put(SkillFactory.getSkill(80001152), new SkillEntry((byte) 1, (byte) 1, -1)); newchar.changeSkillLevel_Skip(ss2, false); break; case Aran: // Aran newchar .getInventory(MapleInventoryType.ETC) .addItem(new Item(4161048, (byte) 0, (short) 1, (byte) 0)); final Map<Skill, SkillEntry> ss3 = new HashMap<>(); ss3.put(SkillFactory.getSkill(80001152), new SkillEntry((byte) 1, (byte) 1, -1)); newchar.changeSkillLevel_Skip(ss3, false); break; case Evan: // Evan newchar .getInventory(MapleInventoryType.ETC) .addItem(new Item(4161052, (byte) 0, (short) 1, (byte) 0)); final Map<Skill, SkillEntry> ss4 = new HashMap<>(); ss4.put(SkillFactory.getSkill(80001152), new SkillEntry((byte) 1, (byte) 1, -1)); newchar.changeSkillLevel_Skip(ss4, false); break; case Mercedes: // Mercedes newchar .getInventory(MapleInventoryType.ETC) .addItem(new Item(4161079, (byte) 0, (short) 1, (byte) 0)); final Map<Skill, SkillEntry> ss5 = new HashMap<>(); ss5.put(SkillFactory.getSkill(20021000), new SkillEntry((byte) 0, (byte) 0, -1)); ss5.put(SkillFactory.getSkill(20021001), new SkillEntry((byte) 0, (byte) 0, -1)); ss5.put(SkillFactory.getSkill(20020002), new SkillEntry((byte) 0, (byte) 0, -1)); ss5.put(SkillFactory.getSkill(20020022), new SkillEntry((byte) 1, (byte) 1, -1)); ss5.put(SkillFactory.getSkill(20020109), new SkillEntry((byte) 1, (byte) 1, -1)); ss5.put(SkillFactory.getSkill(20021110), new SkillEntry((byte) 1, (byte) 1, -1)); ss5.put(SkillFactory.getSkill(20020111), new SkillEntry((byte) 1, (byte) 1, -1)); ss5.put(SkillFactory.getSkill(20020112), new SkillEntry((byte) 1, (byte) 1, -1)); ss5.put(SkillFactory.getSkill(20021181), new SkillEntry((byte) -1, (byte) 0, -1)); ss5.put(SkillFactory.getSkill(20021166), new SkillEntry((byte) -1, (byte) 0, -1)); ss5.put(SkillFactory.getSkill(80001152), new SkillEntry((byte) 1, (byte) 1, -1)); newchar.changeSkillLevel_Skip(ss5, false); break; case Demon: // Demon newchar .getInventory(MapleInventoryType.ETC) .addItem(new Item(4161054, (byte) 0, (short) 1, (byte) 0)); final Map<Skill, SkillEntry> ss6 = new HashMap<>(); ss6.put(SkillFactory.getSkill(30011000), new SkillEntry((byte) 0, (byte) 0, -1)); ss6.put(SkillFactory.getSkill(30011001), new SkillEntry((byte) 0, (byte) 0, -1)); ss6.put(SkillFactory.getSkill(30010002), new SkillEntry((byte) 0, (byte) 0, -1)); ss6.put(SkillFactory.getSkill(30010185), new SkillEntry((byte) 1, (byte) 1, -1)); ss6.put(SkillFactory.getSkill(30010112), new SkillEntry((byte) 1, (byte) 1, -1)); ss6.put(SkillFactory.getSkill(30010111), new SkillEntry((byte) 1, (byte) 1, -1)); ss6.put(SkillFactory.getSkill(30010110), new SkillEntry((byte) 1, (byte) 1, -1)); ss6.put(SkillFactory.getSkill(30010022), new SkillEntry((byte) 1, (byte) 1, -1)); ss6.put(SkillFactory.getSkill(30011109), new SkillEntry((byte) 1, (byte) 1, -1)); ss6.put(SkillFactory.getSkill(30011170), new SkillEntry((byte) 1, (byte) 1, -1)); ss6.put(SkillFactory.getSkill(30011169), new SkillEntry((byte) 1, (byte) 1, -1)); ss6.put(SkillFactory.getSkill(30011168), new SkillEntry((byte) 1, (byte) 1, -1)); ss6.put(SkillFactory.getSkill(30011167), new SkillEntry((byte) 1, (byte) 1, -1)); ss6.put(SkillFactory.getSkill(30010166), new SkillEntry((byte) 1, (byte) 1, -1)); ss6.put(SkillFactory.getSkill(80001152), new SkillEntry((byte) 1, (byte) 1, -1)); newchar.changeSkillLevel_Skip(ss6, false); break; case Phantom: newchar.setLevel((short) 10); newchar.setJob(2400); newchar.getStat().maxhp += 294; // Beginner 10 levels newchar.getStat().maxmp += 113; newchar.getStat().hp += 294; // Beginner 10 levels newchar.getStat().mp += 113; newchar.getStat().str -= 8; newchar.getStat().dex -= 1; newchar.getStat().luk += 31; newchar.setRemainingAp((short) 23); newchar.setRemainingSp(5); final Map<Skill, SkillEntry> ss7 = new HashMap<>(); ss7.put(SkillFactory.getSkill(20031203), new SkillEntry((byte) 1, (byte) 1, -1)); ss7.put(SkillFactory.getSkill(20030204), new SkillEntry((byte) 1, (byte) 1, -1)); ss7.put(SkillFactory.getSkill(20031205), new SkillEntry((byte) 1, (byte) 1, -1)); ss7.put(SkillFactory.getSkill(20030206), new SkillEntry((byte) 1, (byte) 1, -1)); ss7.put(SkillFactory.getSkill(20031207), new SkillEntry((byte) 1, (byte) 1, -1)); ss7.put(SkillFactory.getSkill(20031208), new SkillEntry((byte) 1, (byte) 1, -1)); ss7.put(SkillFactory.getSkill(20031209), new SkillEntry((byte) 1, (byte) 1, -1)); ss7.put(SkillFactory.getSkill(20031210), new SkillEntry((byte) 1, (byte) 1, -1)); ss7.put(SkillFactory.getSkill(80001152), new SkillEntry((byte) 1, (byte) 1, -1)); newchar.changeSkillLevel_Skip(ss7, false); break; case Jett: newchar.setLevel((short) 10); newchar.setJob(508); newchar.getStat().maxhp += 294; // Beginner 10 newchar.getStat().maxmp += 113; newchar.getStat().hp += 294; // Beginner 10 newchar.getStat().mp += 113; newchar.getStat().str -= 8; newchar.getStat().dex += 15; newchar.setRemainingAp((short) 38); newchar.setRemainingSp(1); final Map<Skill, SkillEntry> ss8 = new HashMap<>(); ss8.put(SkillFactory.getSkill(228), new SkillEntry((byte) 1, (byte) 1, -1)); ss8.put(SkillFactory.getSkill(80001152), new SkillEntry((byte) 1, (byte) 1, -1)); // ss8.put(SkillFactory.getSkill(80001151), new SkillEntry((byte) 1, (byte) 1, -1)); newchar.changeSkillLevel_Skip(ss8, false); break; case Mihile: final Map<Skill, SkillEntry> ss9 = new HashMap<>(); ss9.put(SkillFactory.getSkill(80001152), new SkillEntry((byte) 1, (byte) 1, -1)); newchar.changeSkillLevel_Skip(ss9, false); break; } if (MapleCharacterUtil.canCreateChar(name, c.isGm()) && (!LoginInformationProvider.getInstance().isForbiddenName(name) || c.isGm()) && (c.isGm() || c.canMakeCharacter(c.getWorld()))) { MapleCharacter.saveNewCharToDB(newchar, jobType, db); c.getSession().write(LoginPacket.addNewCharEntry(newchar, true)); c.createdChar(newchar.getId()); } else { c.getSession().write(LoginPacket.addNewCharEntry(newchar, false)); } }