Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package l2r.gameserver.model.actor.instance;
- import java.util.List;
- import l2r.gameserver.data.HtmlTemplateLoader;
- import l2r.gameserver.data.xml.impl.DescriptionsData;
- import l2r.gameserver.data.xml.impl.HeroSkillSellerData;
- import l2r.gameserver.data.xml.impl.ItemData;
- import l2r.gameserver.data.xml.impl.MultisellData;
- import l2r.gameserver.data.xml.impl.SkillData;
- import l2r.gameserver.data.xml.impl.SkillIconData;
- import l2r.gameserver.enums.InstanceType;
- import l2r.gameserver.enums.ZoneIdType;
- import l2r.gameserver.instancemanager.PunishmentManager;
- import l2r.gameserver.instancemanager.SiegeManager;
- import l2r.gameserver.instancemanager.TownManager;
- import l2r.gameserver.model.actor.FakePc;
- import l2r.gameserver.model.actor.L2Npc;
- import l2r.gameserver.model.actor.templates.L2NpcTemplate;
- import l2r.gameserver.model.holders.IntIntHolder;
- import l2r.gameserver.model.holders.SkillSellerHolder;
- import l2r.gameserver.model.items.L2Item;
- import l2r.gameserver.model.punishment.PunishmentAffect;
- import l2r.gameserver.model.punishment.PunishmentTask;
- import l2r.gameserver.model.punishment.PunishmentType;
- import l2r.gameserver.model.skills.L2Skill;
- import l2r.gameserver.network.SystemMessageId;
- import l2r.gameserver.network.serverpackets.ActionFailed;
- import l2r.gameserver.network.serverpackets.NpcHtmlMessage;
- import l2r.gameserver.network.serverpackets.StatusUpdate;
- import l2r.gameserver.network.serverpackets.SystemMessage;
- import l2r.util.StringUtil;
- import gr.sr.configsEngine.configs.impl.CustomNpcsConfigs;
- import gr.sr.main.Conditions;
- import gr.sr.main.TopListsLoader;
- public class L2HeroNpcInstance extends L2Npc
- {
- private static final String CLAN_ROOT = "data/html/custom/HeroNpc/ClanSkills/";
- private static final String NOBLESSE_ROOT = "data/html/custom/HeroNpc/Noblesse/";
- private static final String HERO_ROOT = "data/html/custom/HeroNpc/Hero/";
- private static final String MAIN_ROOT = "data/html/custom/HeroNpc/";
- @Override
- public void showChatWindow(L2PcInstance player)
- {
- player.sendPacket(ActionFailed.STATIC_PACKET);
- NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
- html.setFile(player, player.getHtmlPrefix(), MAIN_ROOT + "main.htm");
- html.replace("%objectId%", String.valueOf(getObjectId()));
- player.sendPacket(html);
- }
- public L2HeroNpcInstance(L2NpcTemplate template)
- {
- super(template);
- setInstanceType(InstanceType.L2HeroNpcInstance);
- FakePc fpc = getFakePc();
- if (fpc != null)
- {
- setTitle(fpc.title);
- }
- }
- // Manages all bypasses for normal players
- @Override
- public void onBypassFeedback(final L2PcInstance player, String command)
- {
- // No null pointers
- if (player == null)
- {
- return;
- }
- if (!Conditions.checkPlayerConditions(player))
- {
- return;
- }
- final String skillType = command.split("_")[1];
- if (command.startsWith("Noblesse"))
- {
- if (player.isNoble())
- {
- NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
- html.setFile(player, player.getHtmlPrefix(), NOBLESSE_ROOT + "main.htm");
- html.replace("%player%", player.getName());
- html.replace("%objectId%", String.valueOf(getObjectId()));
- player.sendPacket(html);
- }
- else
- {
- player.sendMessage("Sorry, you must be noblesse!");
- return;
- }
- }
- if (command.startsWith("Clan"))
- {
- if (player.getClan() != null)
- {
- if (player.getClan().getLevel() < 11)
- {
- SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.DO_NOT_HAVE_FURTHER_SKILLS_TO_LEARN_S1);
- if (player.getClan().getLevel() < 11)
- {
- sm.addInt(11);
- }
- else
- {
- sm.addInt(player.getClan().getLevel() + 1);
- }
- NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
- html.setFile(player, player.getHtmlPrefix(), CLAN_ROOT + "main.htm");
- html.replace("%player%", player.getName());
- html.replace("%objectId%", String.valueOf(getObjectId()));
- L2VillageMasterInstance.showPledgeSkillList(player);
- player.sendPacket(sm);
- return;
- }
- player.sendMessage("Sorry, you must have clan lv 11");
- return;
- }
- player.sendMessage("Sorry, you don't have clan");
- return;
- }
- if (command.startsWith("Hero"))
- {
- if (player.isHero())
- {
- NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
- html.setFile(player, player.getHtmlPrefix(), HERO_ROOT + "main.htm");
- html.replace("%player%", player.getName());
- html.replace("%objectId%", String.valueOf(getObjectId()));
- player.sendPacket(html);
- }
- else
- {
- player.sendMessage("Sorry, you must be hero!");
- return;
- }
- }
- if (command.startsWith("preList"))
- {
- NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
- html.setFile(player, player.getHtmlPrefix(), MAIN_ROOT + skillType + ".htm");
- html.replace("%objectId%", String.valueOf(getObjectId()));
- player.sendPacket(html);
- return;
- }
- if (command.startsWith("show"))
- {
- NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
- html.setFile(player, player.getHtmlPrefix(), MAIN_ROOT + "skillList.htm");
- html.replace("%content%", getContent(player, HeroSkillSellerData.getInstance().getAvailableSkills(player, skillType), skillType));
- html.replace("%objectId%", String.valueOf(getObjectId()));
- player.sendPacket(html);
- return;
- }
- if (command.startsWith("info"))
- {
- final SkillSellerHolder holder = getHolder(player, command);
- if (holder == null)
- {
- return;
- }
- NpcHtmlMessage html = new NpcHtmlMessage(getObjectId());
- html.setFile(player, player.getHtmlPrefix(), MAIN_ROOT + "skillInfo.htm");
- html.replace("%player%", player.getName());
- html.replace("%content%", getInfo(holder, player.getSp(), skillType));
- html.replace("%objectId%", String.valueOf(getObjectId()));
- player.sendPacket(html);
- return;
- }
- if (command.startsWith("skill"))
- {
- final SkillSellerHolder holder = getHolder(player, command);
- if (holder == null)
- {
- return;
- }
- if (player.getLevel() < holder.getRequiredLevel())
- {
- player.sendMessage("Level too low");
- return;
- }
- if (player.getSp() < holder.getRequiredSp())
- {
- player.sendMessage("Not enough SP");
- return;
- }
- if (!holder.hasAllItems(player))
- {
- player.sendMessage("You don't have all thew required items.");
- return;
- }
- if (holder.requireNoble() && !player.isNoble())
- {
- player.sendMessage("You need to be noble to learn this skill");
- return;
- }
- final IntIntHolder skillToRemove = holder.getRequiredSkill();
- final L2Skill skill = player.getKnownSkill(skillToRemove.getId());
- if (skill != null)
- {
- player.removeSkill(skill, true);
- }
- for (IntIntHolder item : holder.getItems())
- {
- player.destroyItemByItemId("Learn", item.getId(), item.getVal(), player, true);
- }
- player.setSp(player.getSp() - holder.getRequiredSp());
- final StatusUpdate su = player.makeStatusUpdate(StatusUpdate.SP);
- player.sendPacket(su);
- player.sendUserInfo(true);
- player.addSkill(SkillData.getInstance().getInfo(holder.getSkillId(), holder.getSkillLevel()), true);
- player.sendMessage("You just leaarned " + holder.getName() + " Level " + holder.getSkillLevel());
- onBypassFeedback(player, "show_" + command.split("_")[1]);
- }
- else if (command.startsWith("teleportToGlobal"))
- {
- final String[] data = command.substring(17).split(" ");
- int requiredLevel = -1;
- if (data.length >= 3)
- {
- requiredLevel = Integer.parseInt(data[2]);
- }
- else if (data.length >= 2)
- {
- requiredLevel = Integer.parseInt(data[1]);
- }
- if ((requiredLevel != -1) && (player.getLevel() < requiredLevel))
- {
- player.sendMessageAsAnnouncement("You need at least " + requiredLevel + " level to teleport.", true);
- return;
- }
- final int teleportId = Integer.parseInt(data[0]);
- final Integer[] teleportData = TopListsLoader.getInstance().getTeleportInfo(teleportId);
- int x = teleportData[0];
- int y = teleportData[1];
- int z = teleportData[2];
- boolean forNoble = teleportData[3] == 1;
- int costId = teleportData[4];
- long costCount = teleportData[5];
- if (forNoble && !player.isNoble() && !player.isGM())
- {
- return;
- }
- if (!CustomNpcsConfigs.ALLOW_TELEPORT_DURING_SIEGE)
- {
- if (SiegeManager.getInstance().getSiege(x, y, z) != null)
- {
- player.sendPacket(SystemMessageId.NO_PORT_THAT_IS_IN_SIGE);
- return;
- }
- else if (TownManager.townHasCastleInSiege(x, y) && isInsideZone(ZoneIdType.TOWN))
- {
- player.sendPacket(SystemMessageId.NO_PORT_THAT_IS_IN_SIGE);
- return;
- }
- }
- if (!player.destroyItemByItemId("", costId, costCount, player, true))
- {
- player.sendMessage("Incorrect item count.");
- return;
- }
- if (player.isTransformed() && ((player.getTransformationId() == 9) || (player.getTransformationId() == 8)))
- {
- player.untransform();
- }
- player.teleToLocation(x, y, z);
- }
- if (command.startsWith("multisell"))
- {
- final String subCommand = command.split("_")[1];
- int listId = Integer.parseInt(subCommand);
- switch (listId)
- {
- // ******************B Shop****************//
- case 0:
- listId = 90002;
- break;
- case 1:
- listId = 90014;
- break;
- case 2:
- listId = 90009;
- break;
- case 3:
- listId = 90026;
- break;
- case 4:
- listId = 90569;
- break;
- case 5:
- listId = 90542;
- break;
- case 6:
- listId = 90551;
- break;
- case 7:
- listId = 90088;
- break;
- default:
- listId = 1_000_000;
- break;
- }
- if (listId != 1_000_000)
- {
- MultisellData.getInstance().separateAndSend(listId, player, getAttackable(), _isTeleporting);
- }
- else
- {
- PunishmentManager.getInstance().startPunishment(new PunishmentTask(player.getObjectId(), PunishmentAffect.CHARACTER, PunishmentType.JAIL, System.currentTimeMillis() + 86400000, "24 hours jail by exploit bypasses using L2Adrenaline/Other ", player.getName()));
- }
- }
- }
- private SkillSellerHolder getHolder(L2PcInstance player, String command)
- {
- final String[] data = command.split("_");
- final String cat = data[1];
- final int skillId = Integer.parseInt(data[2]);
- final int skillLevel = Integer.parseInt(data[3]);
- return HeroSkillSellerData.getInstance().getAvailableSkills(player, cat).stream().filter(sk -> sk.sameAs(skillId, skillLevel)).findFirst().orElse(null);
- }
- private String getInfo(SkillSellerHolder holder, int mySp, String skillType)
- {
- if (holder == null)
- {
- return "";
- }
- final int skillId = holder.getSkillId();
- final int skillLevel = holder.getSkillLevel();
- String block = HtmlTemplateLoader.getInstance().getContent("skillSellerInfo");
- block = block.replaceAll("%icon%", SkillIconData.getInstance().getIcon(skillId));
- block = block.replace("%name%", holder.getName());
- block = block.replaceAll("%lvl%", String.valueOf(skillLevel));
- block = block.replace("%skillType%", (SkillData.getInstance().getInfo(skillId, skillLevel).isPassive() ? "Passive" : "Active") + " Skill");
- block = block.replace("%desc%", DescriptionsData.getInstance().getDesc(skillId, skillLevel));
- block = block.replace("%mySp%", StringUtil.formatNumber(mySp));
- block = block.replace("%reqSp%", StringUtil.formatNumber(holder.getRequiredSp()));
- block = block.replace("%items%", getItems(holder));
- block = block.replace("%id%", String.valueOf(holder.getSkillId()));
- block = block.replace("%cat%", skillType);
- return block;
- }
- private String getItems(SkillSellerHolder holder)
- {
- StringBuilder sb = new StringBuilder();
- for (IntIntHolder itemHolder : holder.getItems())
- {
- final L2Item item = ItemData.getInstance().getTemplate(itemHolder.getId());
- String itemBlock = HtmlTemplateLoader.getInstance().getContent("skillSellerItem");
- itemBlock = itemBlock.replaceAll("%icon%", item.getIcon());
- itemBlock = itemBlock.replace("%name%", item.getName());
- itemBlock = itemBlock.replace("%amount%", StringUtil.formatNumber(itemHolder.getVal()));
- sb.append(itemBlock);
- }
- return sb.toString();
- }
- private String getContent(L2PcInstance player, List<SkillSellerHolder> list, String skillType)
- {
- if (list.isEmpty())
- {
- return "No more skills to learn.";
- }
- String block = "";
- StringBuilder sb = new StringBuilder();
- for (SkillSellerHolder holder : list)
- {
- final int id = holder.getSkillId();
- final int lvl = holder.getSkillLevel();
- final boolean isNoblesse = player.isNoble();
- final int maxLv = SkillData.getInstance().getMaxLevel(id);
- block = HtmlTemplateLoader.getInstance().getContent("skillSellerList");
- block = block.replaceAll("%icon%", SkillIconData.getInstance().getIcon(holder.getSkillId()));
- block = block.replace("%name%", holder.getName());
- block = block.replaceAll("%lvl%", String.valueOf(holder.getSkillLevel()));
- block = block.replace("%skillType%", (SkillData.getInstance().getInfo(id, lvl).isPassive() ? "Passive" : "Active") + " Skill");
- block = block.replace("%id%", String.valueOf(holder.getSkillId()));
- block = block.replace("%cat%", skillType);
- block = block.replace("%reqNoble%", String.valueOf(isNoblesse ? 1 : 0));
- block = block.replace("%reqSp%", String.valueOf(holder.getRequiredSp()));
- block = block.replace("%maxlv%", String.valueOf(maxLv));
- sb.append(block);
- }
- return sb.toString();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement