Jump to content

[Guide]Noblesse Quest From The Begin..


Recommended Posts

Part I

 

Before u start the noblesse quest u need the " supplier of reagents " quest

 

Start location: Ivory Tower

Start level: 57 ( i recomand to start it at level 75+ )

From town of Oren use the gatekeeper ( GK ) and teleport to Ivory Tower, once there use again the GK , select the option teleport toanother floor and select the shopping area. Once inside the shopping area go on the right side and talk to the

NPC: Magic trader - Wesley ( 2nd or 3rd NPC - dont remember exactly )

Take the quest " supplier of reagents " .

 

For the noblesse quest u will need : 5x Lunargent and 1xHellfire Oil

To obtain the ingredients for lunargent and hellfire oil u need to hunt in

tower of insolence :

Mobs items/materials

- Hallate's Guardian (5th Floor): Demon's Blood

- Hallate's Maid (3rd Floor): Brown Reagent Pouch

- Platinum Tribe Shaman: Brown Reagent Pouch

- Platinum Guardian Shaman: Reagant Box

 

Blazing Swamp:

Hames Orc Shaman: Grey Reagant Pouch, Quicksilver

 

Drops: double click on reagent pouch to see whats inside

 

Grey Reagant Pouch opens up into one of the following:

2 Volcanic Ash(s), 2 Quicksilver(s), Lava Stone, Moonstone Shard

 

Reagant Box opens up into one of the following:

2 Blood Root(s), Infernium Ore

 

Brown Reagant Pouch opens up into one of the following:

Infernium Ore, Rotten Bone Piece, 2 Sulfur(s)

 

List of mixing formulas:

Low Level Reagant Formulas:

Dracoplasm: 10 Wyrm's Bloods, 1 Blood Root

Magma Dust: 10 Lava Stones, 1 Volcanic Ash

Moon Dust: 10 Moonstone Shards, 1 Volcanic Ash

Necroplasm: 10 Rotten Bone Pieces, 1 Blood Root

Inferno Dust: 10 Infernium Ores, 1 Volcanic Ash

Demonplasm: 10 Demon Blood, 1 blood Root

High Level Reagant Forumals:

Draconic Essence: 10 Dracoplasms, 1 Quicksilver

Fire Essence: 10 Magma Dusts, 1 Sulfur

Lunargent: 10 Moon Dusts, 1 Quicksilver

Midnight Oil: 10 Necroplasms, 1 QuickSilver

Demonic Essense: 10 Demonplasms, 1 Sulfur

Abyss Oil: 10 Inferno Dusts, 1 Sulfur

Hellfire Oil: 1 Fire Essence, 1 Demonic Essence

Nightmare Oil: 1 Lunargent, 1 Midnight Oil

 

What u need for the lunargent and hellfire oil are these materials:

500x Moonstone shards

100x Demonsblood

100x Lava stones

60x Volcanic Ash

2x Sulfur

5x Quicksilver

10x Bloodroot

 

The fastest way to obtain them is by hunting Orc shamans in Blazing Swamp,

Hallate's Guardian and Platinum Shamans in Tower of insolence

 

For the mats part you can buy them directly in gm shop now if you didn't notice yet. (but you still need the base mats, you just skip the long and boring mixing part in ivory tower)

 

__________________________________________________ _____________

 

To start the quest Possessor of a Precious Soul – 1 u need a subclass at level 50 minimum

 

This quest must be completed to start Path of a Noblesse, Possessor of a Precious Soul – 2

 

Start Location: Town of Aden

Start Level: 50

 

First of all u will need to travel to Town of Aden.. on the stairs leading to Einhasad temple of Aden u will find NPC Talien

He asks you to bring him the record of the seventeen nemesis who once challenged the Land Dragon Antharas. For that u need to visit NPC Gabrielle, a direct decendant of one of the heros. She is located near the west exit of Giran town square. She mentions a poet in the hero bunch who became an undead guarding Antharas. Locate Antharas Watchman Gilmore at the entrance of Dragon Valley. He says that he is too busy and sends you to find the Elf Witch Baraham, who is also one of the seventeen heros ( dont teleport to dragonvally , just go on foot from Giran into the deathPass, to find gilmore, look on the right side of Pass , about in the middle of death pass)

- To find Baraham teleport from Town Dion to BeeHive. Baraham is inside a cave west of Beehive. If you take the road from the beach leading up towards the Monster Race Track, the entrance will be on your right. You will find Quest Monster Baraham in there, surrounded by six Quest Monsters Cave Basilisks. Kill Baraham to get Legend of Seventeen. The basilisks are social but they should all be dark blue to you at this point and fairly easy to kill. ( sometimes the basilisk are not there .. dont know why .. maybe a bugg )

 

Go back to Talien. This time he wants an echo crystal containing the song about King Raul and the unification of his kingdom.. To obtain the crystal teleport to Heine

Talk to Melody Maestro Kantabilon in Heine's Grocery Store. He says he would gladly give you the crystal but he first needs to restore it.

He tells u he needs Malruk Succubus claws.. wich are located in Dragon Vally, u can teleport there from Giran Town..

Hunt Malruk Succubus and Malruk Succubus Turen for 10 Malruk Succubus claws. The drop rate is not that bad, although it is not last hit required.

After u get all clwas bring them back to Kantabilon ( in Heine )

 

Return to Talien with the echo crystal. He yet again asks you to find a record for the third legend concerning heros who fought Beleth. Teleport to Oren Town and from there to Hunters Village.

Meet Master Stedmiel in Warrior's Guild at Hunter's Village. He gives you a faded poetry book. Back to Talien. He tells you that his sponsor, Virgil, wants to see you.

Go to Virgil in Rune Township. He is up on a balcony behind the temple with his colleague and his sick granddaughter. So.. hmmm.. to get to Virgil... enter Einhasad temple in Rune Township... and as u enter it.. on the left is a GK ... teleport up into the temple.. enter it.. and on the left side about the middle of the Hall u find on left side an corridor leading up to balcony...

 

Virgil asks you to help his granddaughter rid of her nightmares. Speak with Ogmar for more information. He tells you that the Grand Seer Rahorakti has a cure..

Grand Seer Rahorakti is located in the Mystic Guild just underneath the temple. He says that he needs 5 units of crimson moss from the Splinter Stakatos in Swamp of Screams to prepare the medicine.

Use the GK in rune township market place to teleport into the Swamp of screams.

Hunt Splinter Stakatos, Splinter Stakato Walkers, Soldiers and Drones. The drop rate is about 1 moss per 30-40 kill but again not last hit required. Hunting in Swamp of Screams is a bit tricky since the monsters here have the tendency to run for the closest nest and bring back reinforcements when their hp falls low regardless of where you are standing. Make sure you bring someone who can root them because the Drones resist sleep. They also do bleed and stun.

Take the crimson moss to Rahorakti in Mystic Guild in Rune.

Take Rahorakti's Miraculous Medicine to Kassandra, Virgil's granddaughter, then talk to Virgil again.

He will send u to Goddard to talk to NPC Caradine is standing by the east gate.

Head Blacksmith Noel reluctantly accept your offer to help them. Collect 5 lunargent and 1 hellfire oil. (Total base items needed: 2 sulfur, 5 quicksilver, 10 blood root, 60 volcanic ash, 100 lava stone, 100 demon blood, 500 moonstone shards. Refer to Supplier of Reagant quest on where and how to obtain these items.)

 

So.. if u made already the " supplier of reagents " quest talk to Blacksmith again and give him the items ... else u ned to take the quest " supplier of reagents " in ivory tower .. see my previouse post...

 

Go back to Caradine. She gives you Virgil's Letter to start the second part of Path to a Nobless, Possessor of a Precious Soul.

 

Go talk to Virgil once you reach lvl 60 on your subclass to start 2nd part of noblesse quest.

 

Part II

 

This quest must be completed to start Path of a Noblesse, Possessor of a Precious Soul – 3 and to become a Noblesse

 

Start Location: Rune Castle Town

NPC: Virgil

Prerequisite: Subclass Level 60; Completed Path of a Noblesse, Possessor of a Precious Soul – 1

 

Remember, Virgil needed your help RIGHT NOW. So why aren't you there?, start the quest (Rune Castle Town, teleport to temple, out on the balcony in case you forgot and didn't go help him right away). His grand daughter had a horrible dream about a princess who needed help. DO IT!

 

Go find a bunch of angels and a nasty looking NPC. The Angels are in the Swamp of Screams, just follow the yellow thumbtack on ur map. Talk to him and he'll tell you he tried to save the princess and had to kill all these angels. He doesn't know where she went. You need to inspect the bodies of the angles, they'll disappear. If find nothing ... just wait ... they'll respawn. Keep doing this until you find a single blonde hair. Talk to the NPC again and he'll tell you to go to Witch Calis near Ivory Tower, who owes him a favor, to cast a spell to find out where the princess is.

 

Teleport to Ivory Tower ( from Town Oren ), speak to Witch Calis to the east of Ivory Tower ( east of Ivory Tower is a little hill with a cemetery on top of it , there u find her between the graves - on top of the hill ) who tells you she needs supplies for her spell to work. So run to Alchemist Matild (who is housesitting for Calis) to the West of IT ( just follow the yellow thumbtack on ur map )to get the supplies, then back to Calis. I'm really not sure which is next here. Its either teleport around talking to NPCs or head straight to valley of the saints.

 

Head through the valley of the saints till you find a cave where the thumbtack is. Kill the quest monsters (they're not social) and get orbs of binding. They're 100% drop rate so someone in your party gets one everytime. This part was a bit weird for me. I would suggest having one person (whoever gets 4 first) speak to all the seals and use the orbs to unseal the unicorn. If you don't, the seals will respawn and you'll have to keep doing it, but I think it keeps track of how many seals you've undone. The 4th seal will take all of your orbs of binding. So its not worth trying to get more. After you do your 4th seal, speak to the unicorn, who magically comes alive and is really the princess. Now...yep...back to Virgil

 

After talking to Virgil (the NPC in Rune's Balcony )and those NPCs there, you'll get experience and Caradine's Letter, which you need to start the next Noblesse Quest. u should head to Caradine in Goddard to start the quest part 3 once your subclass hits 65.

 

______________________________________________

 

This quest must be completed to start Path of a Noblesse, Possessor of a Precious Soul – 3

 

 

Start Location: Goddard Castel Town

NPC: Caradine

Prerequisite: Subclass Level 65; Path of a Noblesse, Possessor of a Precious Soul – 1 & 2

 

I dont remember exactly what u should do.. once u talk to caradine in goddard..

just read what she writes in quest.. After u talked to the asked NPC's u need to teleport to Vally of Saints to get some items..

U need to kill Pilgrim of Splendor and Judge of Splendor ... drop rate is fookin bad..

so.. relax.. and just kill them over and over again.. till u get the items..

 

Bring the items back to Goddard and you find you need a third one. To get it you have to kill the princess' nemesis, a level 70 raid boss in the Valley of Saints called Flame of splendor Barakiel . She's all the way to the northeast in the Valley of the Saints. Follow the yellow thumbtack. You'll see what looks like a translucent shining wall. Go through it to see the raid boss. Kill her. If you are strong, you can solo him. If you aren't, get a bunch of people together who need the quest or just to help u (remember that u need to hit last to get the quest item )

Its better to fear the minions of barakiel else wont be that easy to kill barakiel.The minions hit hard.. they are making good damage on u.. ( u can die really fast )

 

Once you have the item, return to the NPC (the one near Caradine ) who sent you there. You then get to sent to IT. And you'll get experience and a letter to start the fourth and final Noblesse Quest. You are almost there. Now you just have to hit 75 on your subclass!

 

__________________________________________

 

This quest must be completed to become a Noblesse

 

Start Location: Goddard Castel Town

Prerequisite: Subclass Level 75; Path of a Noblesse, Possessor of a Precious

Soul – 1, 2 & 3

NPC: Caradine

 

Speak to Caradine in Goddard. Her master wants to talk to you. She will teleport you to her when you are ready. Go there right away!

You'll be teleported to the Coliseum next to the Lady of the Lake. Talk to her and you'll find out that she's actually the Goddess Eva! She asks for your eternal support in this strife-ridden world. If you pledge it, you become a Noblesse and receive the Noblesse Tiara as an accessory.

 

Congratulations! You are now a Noblesse

 

(Noblesse skills works on both main classes and subclasses).

 

______________________________________________

 

Info to noblesse skills:

 

Noblesse Tiara

Hair accessory exclusively used by the Noblesse. It cant be sold or given away.

 

Blessing of Noblesse

Buff/debuff effects are retained after death. However, Blessing of Noblesse and Lucky Charm are lost as normal. Consumes 5 Spirit Ores.

If u dont have the materials.. it consumes 69MP

 

Fortune of Noblesse

Decreases the chance of suffering death penalties if killed during a Boss or Raid War. Consumes 4 A-Grade Lucky Charms. Effect 6.

If u dont have the materials.. it consumes 275MP

 

Harmony of Noblesse

Borrows power from four energy forces and launches devastating non-elemental area attack. Power 250

it consumes 50MP

 

Symphony of Noblesse

Borrows power from eight energy forces and launches devastating non-elemental area attack. Power 400

it consumes 80MP

 

If u want to cast the noblesse spells on urself , select urself and click the spell icons in active skills window..

 

Credits To: rantaplan

 

 

I hope you enjoyed!!

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.


  • Posts

    • adapt for 409 version wtih old config/sql/html's only the core update!   package net.sf.l2j.gameserver.model.actor.instance; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.StringTokenizer; import net.sf.l2j.commons.lang.StringUtil; import net.sf.l2j.commons.math.MathUtil; import net.sf.l2j.Config; import net.sf.l2j.gameserver.data.SkillTable; import net.sf.l2j.gameserver.data.manager.BufferManager; import net.sf.l2j.gameserver.model.actor.Creature; import net.sf.l2j.gameserver.model.actor.Player; import net.sf.l2j.gameserver.model.actor.Summon; import net.sf.l2j.gameserver.model.actor.template.NpcTemplate; import net.sf.l2j.gameserver.network.serverpackets.ItemList; import net.sf.l2j.gameserver.network.serverpackets.MagicSkillUse; import net.sf.l2j.gameserver.network.serverpackets.NpcHtmlMessage; import net.sf.l2j.gameserver.skills.L2Skill; public class SchemmerBuffer extends Folk { private static final int PAGE_LIMIT = 6; public SchemmerBuffer(int objectId, NpcTemplate template) { super(objectId, template); } private void showMainWindow(Player activeChar) { final NpcHtmlMessage html = new NpcHtmlMessage(0); html.setFile(getHtmlPath(getNpcId(), 0)); html.replace("%objectId%", String.valueOf(getObjectId())); html.replace("%name%", activeChar.getName()); html.replace("%buffcount%", "You have " + activeChar.getBuffCount() + "/" + activeChar.getMaxBuffCount() + " buffs."); activeChar.sendPacket(html); } @Override public void onBypassFeedback(Player player, String command) { if (player.getPvpFlag() > 0 && Config.PRESTRICT_USE_BUFFER_ON_PVPFLAG) { player.sendMessage("You can't use buffer when you are pvp flagged."); return; } if (player.isInCombat() && Config.PRESTRICT_USE_BUFFER_IN_COMBAT) { player.sendMessage("You can't use buffer when you are in combat."); return; } if (player.isDead()) return; StringTokenizer st = new StringTokenizer(command, " "); String actualCommand = st.nextToken(); if (actualCommand.startsWith("bufflist")) { autoBuffFunction(player, st.nextToken()); } else if (actualCommand.startsWith("restore")) { String noble = st.nextToken(); player.getStatus().setMaxCpHpMp(); if (noble.equals("true")) { SkillTable.getInstance().getInfo(1323, 1).getEffects(player, player); player.broadcastPacket(new MagicSkillUse(this, player, 1323, 1, 850, 0)); } final Summon summon = player.getSummon(); if (summon != null) summon.getStatus().setMaxHpMp(); showMainWindow(player); } else if (actualCommand.startsWith("cancellation")) { L2Skill buff; buff = SkillTable.getInstance().getInfo(1056, 1); buff.getEffects(this, player); player.stopAllEffectsExceptThoseThatLastThroughDeath(); player.broadcastPacket(new MagicSkillUse(this, player, 1056, 1, 850, 0)); player.stopAllEffects(); final Summon summon = player.getSummon(); if (summon != null) summon.stopAllEffects(); showMainWindow(player); } else if (actualCommand.startsWith("openlist")) { String category = st.nextToken(); String htmfile = st.nextToken(); NpcHtmlMessage html = new NpcHtmlMessage(getObjectId()); if (category.startsWith("null")) { html.setFile("data/html/mods/buffer/" + htmfile + ".htm"); // First Page if (htmfile.equals("index")) { html.replace("%name%", player.getName()); html.replace("%buffcount%", "You have " + player.getBuffCount() + "/" + player.getMaxBuffCount() + " buffs."); } } else html.setFile("data/html/mods/buffer/" + category + "/" + htmfile + ".htm"); html.replace("%objectId%", String.valueOf(getObjectId())); player.sendPacket(html); } else if (actualCommand.startsWith("dobuff")) { int buffid = Integer.valueOf(st.nextToken()); int bufflevel = Integer.valueOf(st.nextToken()); String category = st.nextToken(); String windowhtml = st.nextToken(); String votebuff = null; if (st.hasMoreTokens()) votebuff = st.nextToken(); if (windowhtml.equals("malaria")) { if (player.getInventory().getItemCount(Config.PVOTE_BUFF_ITEM_ID, 0) >= 1) { player.getInventory().destroyItemByItemId("VoteCoins", Config.PVOTE_BUFF_ITEM_ID, 1, player, null); player.sendPacket(new ItemList(player, true)); player.sendMessage(1 + " Vote eye destroyed."); } else { player.sendMessage("You dont have enough (" + 1 + ") vote item for buff."); return; } } if (votebuff != null) { if (player.getInventory().getItemCount(Config.PVOTE_BUFF_ITEM_ID, 0) >= Config.PVOTE_BUFF_ITEM_COUNT) { player.getInventory().destroyItemByItemId("VoteCoins", Config.PVOTE_BUFF_ITEM_ID, Config.PVOTE_BUFF_ITEM_COUNT, player, null); player.sendPacket(new ItemList(player, true)); player.sendMessage(Config.PVOTE_BUFF_ITEM_COUNT + " vote stone destroyed."); } else { player.sendMessage("You dont have enough (" + Config.PVOTE_BUFF_ITEM_COUNT + ") vote item for buff."); return; } } Creature target = player; if (category.startsWith("pet")) { if (player.getSummon() == null) { player.sendMessage("Incorrect Pet"); showMainWindow(player); return; } target = player.getSummon(); } MagicSkillUse mgc = new MagicSkillUse(this, target, buffid, bufflevel, 1150, 0); player.sendPacket(mgc); player.broadcastPacket(mgc); SkillTable.getInstance().getInfo(buffid, bufflevel).getEffects(this, target); NpcHtmlMessage html = new NpcHtmlMessage(getObjectId()); html.setFile("data/html/mods/buffer/" + category + "/" + windowhtml + ".htm"); html.replace("%objectId%", String.valueOf(getObjectId())); html.replace("%name%", player.getName()); player.sendPacket(html); } else if (actualCommand.startsWith("getbuff")) { int buffid = Integer.valueOf(st.nextToken()); int bufflevel = Integer.valueOf(st.nextToken()); if (buffid != 0) { SkillTable.getInstance().getInfo(buffid, bufflevel).getEffects(this, player); broadcastPacket(new MagicSkillUse(this, player, buffid, bufflevel, 450, 0)); showMainWindow(player); } } else if (actualCommand.startsWith("support")) { showGiveBuffsWindow(player); } else if (actualCommand.startsWith("givebuffs")) { final String schemeName = st.nextToken(); final int cost = Integer.parseInt(st.nextToken()); Creature target = null; if (st.hasMoreTokens()) { final String targetType = st.nextToken(); if (targetType != null && targetType.equalsIgnoreCase("pet")) target = player.getSummon(); } else target = player; if (target == null) player.sendMessage("You don't have a pet."); else if (cost == 0 || player.reduceAdena("NPC Buffer", cost, this, true)) BufferManager.getInstance().applySchemeEffects(this, target, player.getObjectId(), schemeName); } else if (actualCommand.startsWith("editschemes")) { showEditSchemeWindow(player, st.nextToken(), st.nextToken(), Integer.parseInt(st.nextToken())); } else if (actualCommand.startsWith("skill")) { final String groupType = st.nextToken(); final String schemeName = st.nextToken(); final int skillId = Integer.parseInt(st.nextToken()); final int page = Integer.parseInt(st.nextToken()); final List<Integer> skills = BufferManager.getInstance().getScheme(player.getObjectId(), schemeName); if (actualCommand.startsWith("skillselect") && !schemeName.equalsIgnoreCase("none")) { if (skills.size() < player.getMaxBuffCount()) skills.add(skillId); else player.sendMessage("This scheme has reached the maximum amount of buffs."); } else if (actualCommand.startsWith("skillunselect")) skills.remove(Integer.valueOf(skillId)); showEditSchemeWindow(player, groupType, schemeName, page); } else if (actualCommand.startsWith("createscheme")) { try { final String schemeName = st.nextToken(); if (schemeName.length() > 14) { player.sendMessage("Scheme's name must contain up to 14 chars. Spaces are trimmed."); return; } final Map<String, ArrayList<Integer>> schemes = BufferManager.getInstance().getPlayerSchemes(player.getObjectId()); if (schemes != null) { if (schemes.size() == Config.PBUFFER_MAX_SCHEMES) { player.sendMessage("Maximum schemes amount is already reached."); return; } if (schemes.containsKey(schemeName)) { player.sendMessage("The scheme name already exists."); return; } } BufferManager.getInstance().setScheme(player.getObjectId(), schemeName.trim(), new ArrayList<>()); showGiveBuffsWindow(player); } catch (Exception e) { player.sendMessage("Scheme's name must contain up to 14 chars. Spaces are trimmed."); } } else if (actualCommand.startsWith("deletescheme")) { try { final String schemeName = st.nextToken(); final Map<String, ArrayList<Integer>> schemes = BufferManager.getInstance().getPlayerSchemes(player.getObjectId()); if (schemes != null && schemes.containsKey(schemeName)) schemes.remove(schemeName); } catch (Exception e) { player.sendMessage("This scheme name is invalid."); } showGiveBuffsWindow(player); } super.onBypassFeedback(player, command); } @Override public String getHtmlPath(int npcId, int val) { String filename = ""; if (val == 0) filename = "" + npcId; else filename = npcId + "-" + val; return "data/html/mods/buffer/" + filename + ".htm"; } /** * Send an html packet to the {@link Player} set a parameter with Give Buffs menu info for player and pet, depending on targetType parameter {player, pet}. * @param player : The {@link Player} to make checks on. */ private void showGiveBuffsWindow(Player player) { final StringBuilder sb = new StringBuilder(200); final Map<String, ArrayList<Integer>> schemes = BufferManager.getInstance().getPlayerSchemes(player.getObjectId()); if (schemes == null || schemes.isEmpty()) sb.append("<font color=\"LEVEL\">You haven't defined any scheme.</font>"); else { for (Map.Entry<String, ArrayList<Integer>> scheme : schemes.entrySet()) { final int cost = getFee(scheme.getValue()); StringUtil.append(sb, "<font color=\"LEVEL\">", scheme.getKey(), " [", scheme.getValue().size(), " / ", player.getMaxBuffCount(), "]", ((cost > 0) ? " - cost: " + StringUtil.formatNumber(cost) : ""), "</font><br1>"); StringUtil.append(sb, "<a action=\"bypass npc_%objectId%_givebuffs ", scheme.getKey(), " ", cost, "\">Use on Me</a>&nbsp;|&nbsp;"); StringUtil.append(sb, "<a action=\"bypass npc_%objectId%_givebuffs ", scheme.getKey(), " ", cost, " pet\">Use on Pet</a>&nbsp;|&nbsp;"); StringUtil.append(sb, "<a action=\"bypass npc_%objectId%_editschemes Buffs ", scheme.getKey(), " 1\">Edit</a>&nbsp;|&nbsp;"); StringUtil.append(sb, "<a action=\"bypass npc_%objectId%_deletescheme ", scheme.getKey(), "\">Delete</a><br>"); } } final NpcHtmlMessage html = new NpcHtmlMessage(0); html.setFile(getHtmlPath(getNpcId(), 1)); html.replace("%schemes%", sb.toString()); html.replace("%max_schemes%", Config.PBUFFER_MAX_SCHEMES); html.replace("%objectId%", getObjectId()); player.sendPacket(html); } /** * Send an html packet to the {@link Player} set as parameter with Edit Scheme Menu info. This allows the {@link Player} to edit each created scheme (add/delete skills) * @param player : The {@link Player} to make checks on. * @param groupType : The group of skills to select. * @param schemeName : The scheme to make check. * @param page : The current checked page. */ private void showEditSchemeWindow(Player player, String groupType, String schemeName, int page) { final NpcHtmlMessage html = new NpcHtmlMessage(0); final List<Integer> schemeSkills = BufferManager.getInstance().getScheme(player.getObjectId(), schemeName); html.setFile(getHtmlPath(getNpcId(), 2)); html.replace("%schemename%", schemeName); html.replace("%count%", schemeSkills.size() + " / " + player.getMaxBuffCount()); html.replace("%typesframe%", getTypesFrame(groupType, schemeName)); html.replace("%skilllistframe%", getGroupSkillList(player, groupType, schemeName, page)); html.replace("%objectId%", getObjectId()); player.sendPacket(html); } /** * @param player : The {@link Player} to make checks on. * @param groupType : The group of skills to select. * @param schemeName : The scheme to make check. * @param page : The current checked page. * @return A {@link String} representing skills available for selection for a given groupType. */ private String getGroupSkillList(Player player, String groupType, String schemeName, int page) { // Retrieve the entire skills list based on group type. List<Integer> skills = BufferManager.getInstance().getSkillsIdsByType(groupType); if (skills.isEmpty()) return "That group doesn't contain any skills."; // Calculate page number. final int max = MathUtil.countPagesNumber(skills.size(), PAGE_LIMIT); if (page > max) page = max; // Cut skills list up to page number. skills = skills.subList((page - 1) * PAGE_LIMIT, Math.min(page * PAGE_LIMIT, skills.size())); final List<Integer> schemeSkills = BufferManager.getInstance().getScheme(player.getObjectId(), schemeName); final StringBuilder sb = new StringBuilder(skills.size() * 150); int row = 0; for (int skillId : skills) { final String icon = (skillId < 100) ? "icon.skill00" + skillId : (skillId < 1000) ? "icon.skill0" + skillId : "icon.skill" + skillId; sb.append(((row % 2) == 0 ? "<table width=\"280\" bgcolor=\"000000\"><tr>" : "<table width=\"280\"><tr>")); if (schemeSkills.contains(skillId)) StringUtil.append(sb, "<td height=40 width=40><img src=\"", icon, "\" width=32 height=32></td><td width=190>", SkillTable.getInstance().getInfo(skillId, 1).getName(), "<br1><font color=\"B09878\">", BufferManager.getInstance().getAvailableBuff(skillId).getDescription(), "</font></td><td><button action=\"bypass npc_%objectId%_skillunselect ", groupType, " ", schemeName, " ", skillId, " ", page, "\" width=32 height=32 back=\"L2UI_CH3.mapbutton_zoomout2\" fore=\"L2UI_CH3.mapbutton_zoomout1\"></td>"); else StringUtil.append(sb, "<td height=40 width=40><img src=\"", icon, "\" width=32 height=32></td><td width=190>", SkillTable.getInstance().getInfo(skillId, 1).getName(), "<br1><font color=\"B09878\">", BufferManager.getInstance().getAvailableBuff(skillId).getDescription(), "</font></td><td><button action=\"bypass npc_%objectId%_skillselect ", groupType, " ", schemeName, " ", skillId, " ", page, "\" width=32 height=32 back=\"L2UI_CH3.mapbutton_zoomin2\" fore=\"L2UI_CH3.mapbutton_zoomin1\"></td>"); sb.append("</tr></table><img src=\"L2UI.SquareGray\" width=277 height=1>"); row++; } for (int i = PAGE_LIMIT; i > row; i--) StringUtil.append(sb, "<img height=41>"); // Build page footer. sb.append("<br><img src=\"L2UI.SquareGray\" width=277 height=1><table width=\"100%\" bgcolor=000000><tr>"); if (page > 1) StringUtil.append(sb, "<td align=left width=70><a action=\"bypass npc_" + getObjectId() + "_editschemes ", groupType, " ", schemeName, " ", page - 1, "\">Previous</a></td>"); else StringUtil.append(sb, "<td align=left width=70>Previous</td>"); StringUtil.append(sb, "<td align=center width=100>Page ", page, "</td>"); if (page < max) StringUtil.append(sb, "<td align=right width=70><a action=\"bypass npc_" + getObjectId() + "_editschemes ", groupType, " ", schemeName, " ", page + 1, "\">Next</a></td>"); else StringUtil.append(sb, "<td align=right width=70>Next</td>"); sb.append("</tr></table><img src=\"L2UI.SquareGray\" width=277 height=1>"); return sb.toString(); } /** * @param groupType : The group of skills to select. * @param schemeName : The scheme to make check. * @return A {@link String} representing all groupTypes available. The group currently on selection isn't linkable. */ private static String getTypesFrame(String groupType, String schemeName) { final StringBuilder sb = new StringBuilder(500); sb.append("<table>"); int count = 0; for (String type : BufferManager.getInstance().getSkillTypes()) { if (count == 0) sb.append("<tr>"); if (groupType.equalsIgnoreCase(type)) StringUtil.append(sb, "<td width=65>", type, "</td>"); else StringUtil.append(sb, "<td width=65><a action=\"bypass npc_%objectId%_editschemes ", type, " ", schemeName, " 1\">", type, "</a></td>"); count++; if (count == 4) { sb.append("</tr>"); count = 0; } } if (!sb.toString().endsWith("</tr>")) sb.append("</tr>"); sb.append("</table>"); return sb.toString(); } /** * @param list : A {@link List} of skill ids. * @return a global fee for all skills contained in the {@link List}. */ private static int getFee(ArrayList<Integer> list) { if (Config.PBUFFER_STATIC_BUFF_COST > 0) return list.size() * Config.PBUFFER_STATIC_BUFF_COST; int fee = 0; for (int sk : list) fee += BufferManager.getInstance().getAvailableBuff(sk).getPrice(); return fee; } private void autoBuffFunction(Player player, String bufflist) { ArrayList<L2Skill> skills_to_buff = new ArrayList<>(); List<Integer> list = null; if (bufflist.equalsIgnoreCase("fighter")) list = Config.PFIGHTER_SKILL_LIST; else if (bufflist.equalsIgnoreCase("mage")) list = Config.PMAGE_SKILL_LIST; if (list != null) { for (int skillId : list) { L2Skill skill = SkillTable.getInstance().getInfo(skillId, SkillTable.getInstance().getMaxLevel(skillId)); if (skill != null) skills_to_buff.add(skill); } for (L2Skill sk : skills_to_buff) sk.getEffects(player, player); player.updateEffectIcons(); list = null; } skills_to_buff.clear(); showMainWindow(player); } }  
    • L2 OPIUM - AUTO FARM HTML    
    • json_extract does not exist. -> wrong mysql server version.
    • DISCORD : utchiha_market telegram : https://t.me/utchiha_market SELLIX STORE : https://utchihamkt.mysellix.io/ Join our server for more products : https://discord.gg/hood-services https://campsite.bio/utchihaamkt  
  • Topics

×
×
  • Create New...