Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import gr.sr.aioItem.runnable.TransformFinalizer;
- import gr.sr.configsEngine.configs.impl.AioItemsConfigs;
- import gr.sr.configsEngine.configs.impl.CustomNpcsConfigs;
- import gr.sr.main.Conditions;
- import gr.sr.main.TopListsLoader;
- import l2r.Config;
- import l2r.gameserver.ThreadPoolManager;
- import l2r.gameserver.cache.HtmCache;
- import l2r.gameserver.data.sql.CharNameTable;
- import l2r.gameserver.data.sql.ClanTable;
- import l2r.gameserver.data.xml.impl.*;
- 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.Elementals;
- import l2r.gameserver.model.L2Augmentation;
- import l2r.gameserver.model.actor.FakePc;
- import l2r.gameserver.model.actor.L2Npc;
- import l2r.gameserver.model.actor.instance.L2PcInstance;
- import l2r.gameserver.model.actor.templates.L2NpcTemplate;
- import l2r.gameserver.model.holders.IntIntHolder;
- import l2r.gameserver.model.holders.SkillHolder;
- import l2r.gameserver.model.holders.SkillSellerHolder;
- import l2r.gameserver.model.itemcontainer.Inventory;
- import l2r.gameserver.model.items.L2Henna;
- import l2r.gameserver.model.items.L2Item;
- import l2r.gameserver.model.items.instance.L2ItemInstance;
- import l2r.gameserver.model.items.type.CrystalType;
- 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.*;
- import l2r.gameserver.util.Util;
- import org.slf4j.LoggerFactory;
- import java.util.List;
- import java.util.logging.Logger;
- /**
- * @author -=DoctorNo=- Version 3.3 Last Edit: 19-10-2012
- */
- public final class L2AugmentNpcInstance extends L2Npc
- {
- private static final String ROOT = "data/html/sunrise/TopNpc/";
- private static final String CHANGE_NAME = "data/html/sunrise/TopNpc/ChangeName/";
- private static final String CHANGE_CLAN_NAME = "data/html/sunrise/TopNpc/ChangeClanName/";
- private static final String ADD_ATTRIBUTES = "data/html/sunrise/TopNpc/AddAttributes/";
- private static final String CHANGE_GENDER = "data/html/sunrise/TopNpc/ChangeGender/";
- private static final String ADD_DYES = "data/html/sunrise/TopNpc/AddDyes/";
- private static final String REMOVE_DYES = "data/html/sunrise/TopNpc/RemoveDyes/";
- private static Logger _log = (Logger) LoggerFactory.getLogger(L2AugmentNpcInstance.class);
- @Override
- public void showChatWindow(L2PcInstance player)
- {
- player.sendPacket(ActionFailed.STATIC_PACKET);
- String html = HtmCache.getInstance().getHtm(player, player.getHtmlPrefix(), ROOT + "main.htm");
- html = html.replace("%name%", player.getName());
- html = html.replace("%objectId%", String.valueOf(getObjectId()));
- Util.sendCBHtml(player, html);
- }
- public L2AugmentNpcInstance(L2NpcTemplate template)
- {
- super(template);
- setInstanceType(InstanceType.L2AugmentNpcInstance);
- FakePc fpc = getFakePc();
- if (fpc != null)
- {
- setTitle(fpc.title);
- }
- }
- /**
- * Method to send the html to char
- *
- * @param player
- * @param html
- */
- public void sendPacket(L2PcInstance player, String html)
- {
- NpcHtmlMessage msg = new NpcHtmlMessage(getObjectId());
- msg.setFile(player, player.getHtmlPrefix(), "/data/html/sunrise/TopNpc/" + html);
- msg.replace("%objectId%", String.valueOf(getObjectId()));
- player.sendPacket(msg);
- }
- /**
- * Method to manage all player bypasses
- *
- * @param player
- * @param command
- */
- @Override
- public void onBypassFeedback(final L2PcInstance player, String command)
- {
- final String skillType = command.split("_")[1];
- // No null pointers
- if (player == null)
- {
- return;
- }
- if (!Conditions.checkPlayerConditions(player))
- {
- return;
- }
- if (command.startsWith("changeName"))
- {
- changeName(player, command);
- player.sendPacket(ActionFailed.STATIC_PACKET);
- String html = HtmCache.getInstance().getHtm(player, player.getHtmlPrefix(), CHANGE_NAME + "main.htm");
- html = html.replace("%name%", player.getName());
- html = html.replace("%objectId%", String.valueOf(getObjectId()));
- Util.sendCBHtml(player, command);
- return;
- }
- if (command.startsWith("changeClanName"))
- {
- changeClanName(player, command);
- player.sendPacket(ActionFailed.STATIC_PACKET);
- String html = HtmCache.getInstance().getHtm(player, player.getHtmlPrefix(), CHANGE_CLAN_NAME + "main.htm");
- html = html.replace("%name%", player.getName());
- html = html.replace("%objectId%", String.valueOf(getObjectId()));
- Util.sendCBHtml(player, command);
- return;
- }
- if (command.startsWith("addAttributes"))
- {
- addAttributes(player, command);
- player.sendPacket(ActionFailed.STATIC_PACKET);
- String html = HtmCache.getInstance().getHtm(player, player.getHtmlPrefix(), ADD_ATTRIBUTES + "main.htm");
- html = html.replace("%name%", player.getName());
- html = html.replace("%objectId%", String.valueOf(getObjectId()));
- Util.sendCBHtml(player, command);
- return;
- }
- if (command.startsWith("changeGender"))
- {
- changeGender(player, command);
- player.sendPacket(ActionFailed.STATIC_PACKET);
- String html = HtmCache.getInstance().getHtm(player, player.getHtmlPrefix(), CHANGE_GENDER + "main.htm");
- html = html.replace("%name%", player.getName());
- html = html.replace("%objectId%", String.valueOf(getObjectId()));
- Util.sendCBHtml(player, command);
- return;
- }
- if (command.startsWith("symbol"))
- {
- if (command.startsWith("addDies"))
- {
- addDyes(player, command);
- player.sendPacket(ActionFailed.STATIC_PACKET);
- String html = HtmCache.getInstance().getHtm(player, player.getHtmlPrefix(), ADD_DYES + "main.htm");
- html = html.replace("%name%", player.getName());
- html = html.replace("%objectId%", String.valueOf(getObjectId()));
- Util.sendCBHtml(player, command);
- return;
- }
- else if (command.startsWith("removeDies"))
- {
- removeDyes(player, command);
- player.sendPacket(ActionFailed.STATIC_PACKET);
- String html = HtmCache.getInstance().getHtm(player, player.getHtmlPrefix(), REMOVE_DYES + "main.htm");
- html = html.replace("%name%", player.getName());
- html = html.replace("%objectId%", String.valueOf(getObjectId()));
- Util.sendCBHtml(player, command);
- return;
- }
- }
- }
- private void addDyes(L2PcInstance player, String command)
- {
- List<L2Henna> tato = HennaData.getInstance().getHennaList(player.getClassId());
- player.sendPacket(new HennaEquipList(player, tato));
- }
- private void removeDyes(L2PcInstance player, String command)
- {
- boolean hasHennas = false;
- for (int i = 1; i <= 3; i++)
- {
- L2Henna henna = player.getHennaEx().getHenna(i);
- if (henna != null)
- {
- hasHennas = true;
- }
- }
- if (hasHennas)
- {
- player.sendPacket(new HennaRemoveList(player));
- }
- else
- {
- player.sendMessage("You do not have dyes.");
- }
- }
- private void changeGender(L2PcInstance player, String command)
- {
- String itemName = ItemData.getInstance().getTemplate(Config.CHANGE_GENDER_CUSTOM_NPC_COST_ID).getName();
- long count = Config.CHANGE_GENDER_CUSTOM_NPC_COST_AMOUNT;
- if (command.startsWith("changeGender"))
- {
- if (!player.destroyItemByItemId("", Config.CHANGE_GENDER_CUSTOM_NPC_COST_ID, count, player, false))
- {
- player.sendMessage("You need " + Config.CHANGE_GENDER_CUSTOM_NPC_COST_AMOUNT + " " + itemName);
- return;
- }
- }
- player.getAppearance().setSex(player.getAppearance().getSex() ? false : true);
- player.sendMessage("Your gender has been changed.");
- player.broadcastUserInfo();
- // Transform-untransorm player quickly to force the client to reload the character textures
- TransformData.getInstance().transformPlayer(105, player);
- player.setSkillCast(ThreadPoolManager.getInstance().scheduleGeneral(new TransformFinalizer(player), 200));
- }
- private void addAttributes(L2PcInstance player, String command)
- {
- int armorType = -1;
- if (command.startsWith("elementhead"))
- {
- armorType = Inventory.PAPERDOLL_HEAD;
- }
- else if (command.startsWith("elementchest"))
- {
- armorType = Inventory.PAPERDOLL_CHEST;
- }
- else if (command.startsWith("elementgloves"))
- {
- armorType = Inventory.PAPERDOLL_GLOVES;
- }
- else if (command.startsWith("elementboots"))
- {
- armorType = Inventory.PAPERDOLL_FEET;
- }
- else if (command.startsWith("elementlegs"))
- {
- armorType = Inventory.PAPERDOLL_LEGS;
- }
- else if (command.startsWith("elementwep"))
- {
- armorType = Inventory.PAPERDOLL_RHAND;
- }
- int elementWeaponValue = AioItemsConfigs.ELEMENT_VALUE_WEAPON;
- int elementArmorValue = AioItemsConfigs.ELEMENT_VALUE_ARMOR;
- String itemName = ItemData.getInstance().getTemplate(Config.AUGMENT_CUSTOM_NPC_COST_ID).getName();
- long count = Config.AUGMENT_CUSTOM_NPC_COST_AMOUNT;
- if (!player.destroyItemByItemId("", Config.AUGMENT_CUSTOM_NPC_COST_ID, count, player, false))
- {
- L2ItemInstance parmorInstance = player.getInventory().getPaperdollItem(armorType);
- if ((parmorInstance != null) && (parmorInstance.getLocationSlot() == armorType))
- {
- String[] types = command.split(" ");
- byte elementtoAdd = Elementals.getElementId(types[1]);
- byte opositeElement = Elementals.getOppositeElement(elementtoAdd);
- Elementals oldElement = parmorInstance.getElemental(elementtoAdd);
- switch (parmorInstance.getItem().getCrystalType())
- {
- case NONE:
- case A:
- case B:
- case C:
- case D:
- player.sendMessage("Invalid item grade.");
- return;
- default:
- break;
- }
- if (!AioItemsConfigs.ELEMENT_ALLOW_MORE_ATT_FOR_WEAPONS)
- {
- if ((parmorInstance.isWeapon() && (parmorInstance.getElementals() != null)) || (parmorInstance.isArmor() && (oldElement != null) && (parmorInstance.getElementals() != null) && (parmorInstance.getElementals().length >= 3)))
- {
- player.sendPacket(SystemMessageId.ANOTHER_ELEMENTAL_POWER_ALREADY_ADDED);
- return;
- }
- }
- if (parmorInstance.isWeapon())
- {
- if ((oldElement != null) && (oldElement.getValue() >= elementWeaponValue))
- {
- player.sendMessage("You cannot add same attribute to item!");
- return;
- }
- if (parmorInstance.getElementals() != null)
- {
- for (Elementals elm : parmorInstance.getElementals())
- {
- if (parmorInstance.isEquipped())
- {
- parmorInstance.getElemental(elm.getElement()).removeBonus(player);
- }
- parmorInstance.clearElementAttr(elm.getElement());
- }
- }
- }
- else if (parmorInstance.isArmor())
- {
- if (parmorInstance.getElementals() != null)
- {
- for (Elementals elm : parmorInstance.getElementals())
- {
- if (elm.getElement() == opositeElement)
- {
- player.sendMessage("You cannot add opposite attribute to item!");
- return;
- }
- if ((elm.getElement() == elementtoAdd) && (elm.getValue() >= elementArmorValue))
- {
- player.sendMessage("You cannot add same attribute to item!");
- return;
- }
- }
- }
- }
- player.getInventory().unEquipItemInSlot(armorType);
- parmorInstance.setElementAttr(elementtoAdd, parmorInstance.isWeapon() ? elementWeaponValue : elementArmorValue);
- player.getInventory().equipItem(parmorInstance);
- player.sendMessage("Successfully added " + types[1] + " attribute to your item.");
- InventoryUpdate iu = new InventoryUpdate();
- iu.addModifiedItem(parmorInstance);
- player.sendInventoryUpdate(iu);
- }
- else
- {
- player.sendMessage("You cannot attribute items that are not equipped!");
- }
- }
- player.sendMessage("You need " + Config.AUGMENT_CUSTOM_NPC_COST_AMOUNT + " " + itemName);
- }
- private void changeClanName(L2PcInstance player, String command)
- {
- try
- {
- String val = command.substring(15);
- if ((player.getClan() == null) || (!player.isClanLeader()))
- {
- player.sendPacket(SystemMessageId.YOU_ARE_NOT_AUTHORIZED_TO_DO_THAT);
- return;
- }
- if (!Util.isAlphaNumeric(val))
- {
- player.sendPacket(SystemMessageId.CLAN_NAME_INCORRECT);
- return;
- }
- String itemName = ItemData.getInstance().getTemplate(Config.CHANGE_CLAN_NAME_CUSTOM_NPC_COST_ID).getName();
- long count = Config.CHANGE_CLAN_NAME_CUSTOM_NPC_COST_AMOUNT;
- if (!player.destroyItemByItemId("", Config.CHANGE_CLAN_NAME_CUSTOM_NPC_COST_ID, count, player, false))
- {
- player.sendMessage("You need " + Config.CHANGE_CLAN_NAME_CUSTOM_NPC_COST_AMOUNT + " " + itemName);
- return;
- }
- if (ClanTable.getInstance().getClanByName(val) != null)
- {
- player.sendMessage("Warning, clan name " + val + " already exists.");
- return;
- }
- player.getClan().setName(val);
- player.getClan().updateClanNameInDB();
- player.sendMessage("Your clan name has been changed to " + val);
- player.broadcastUserInfo();
- if (player.isInParty())
- {
- // Delete party window for other party members
- player.getParty().broadcastToPartyMembers(player, new PartySmallWindowDeleteAll());
- for (L2PcInstance member : player.getParty().getMembers())
- {
- // And re-add
- if (member != player)
- {
- member.sendPacket(new PartySmallWindowAll(member, player.getParty()));
- }
- }
- }
- if (player.getClan() != null)
- {
- player.getClan().broadcastClanStatus();
- }
- }
- catch (StringIndexOutOfBoundsException e)
- {
- // Case of empty character name
- player.sendMessage("Clan name box cannot be empty.");
- }
- }
- private void changeName(L2PcInstance player, String command)
- {
- try
- {
- String val = command.substring(11);
- if (!Util.isAlphaNumeric(val))
- {
- player.sendMessage("Invalid character name.");
- return;
- }
- if (CharNameTable.getInstance().getIdByName(val) > 0)
- {
- player.sendMessage("Warning, name " + val + " already exists.");
- return;
- }
- player.destroyItemByItemId("Name Change", Config.CHANGE_NAME_CUSTOM_NPC_COST_ID, Config.CHANGE_NAME_CUSTOM_NPC_AMOUNT, player, true);
- player.setName(val);
- player.getAppearance().setVisibleName(val);
- player.store();
- player.sendMessage("Your name has been changed to " + val);
- player.broadcastUserInfo();
- if (player.isInParty())
- {
- // Delete party window for other party members
- player.getParty().broadcastToPartyMembers(player, new PartySmallWindowDeleteAll());
- for (L2PcInstance member : player.getParty().getMembers())
- {
- // And re-add
- if (member != player)
- {
- member.sendPacket(new PartySmallWindowAll(member, player.getParty()));
- }
- }
- }
- if (player.getClan() != null)
- {
- player.getClan().broadcastClanStatus();
- }
- }
- catch (StringIndexOutOfBoundsException e)
- {
- // Case of empty character name
- player.sendMessage("Player name box cannot be empty.");
- }
- }
- private boolean weaponCheck(L2PcInstance player, L2ItemInstance weapon)
- {
- if (weapon.getItem().getItemGrade() == CrystalType.S)
- {
- return true;
- }
- if (weapon.getItem().getItemGrade() == CrystalType.S80)
- {
- return true;
- }
- if (weapon.getItem().getItemGrade() == CrystalType.S84)
- {
- return true;
- }
- return false;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment