Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package net.sf.l2j.mods.itemhandlers;
- import net.sf.l2j.gameserver.data.xml.AugmentationData;
- import net.sf.l2j.gameserver.enums.Paperdoll;
- import net.sf.l2j.gameserver.enums.SayType;
- import net.sf.l2j.gameserver.handler.IItemHandler;
- import net.sf.l2j.gameserver.model.Augmentation;
- import net.sf.l2j.gameserver.model.actor.Playable;
- import net.sf.l2j.gameserver.model.actor.Player;
- import net.sf.l2j.gameserver.model.item.instance.ItemInstance;
- import net.sf.l2j.gameserver.network.serverpackets.CreatureSay;
- import net.sf.l2j.gameserver.network.serverpackets.ExShowScreenMessage;
- import net.sf.l2j.gameserver.network.serverpackets.InventoryUpdate;
- import net.sf.l2j.gameserver.network.serverpackets.SocialAction;
- /**
- * @author RKolibri
- */
- public class FastAugmentation implements IItemHandler {
- @Override
- public void useItem(Playable playable, ItemInstance item, boolean forceUse) {
- Player player = (Player) playable;
- ItemInstance weapon = player.getInventory().getItemFrom(Paperdoll.RHAND);
- Augmentation topLs = AugmentationData.getInstance().generateRandomAugmentation(76, 3);
- Augmentation highLs = AugmentationData.getInstance().generateRandomAugmentation(76, 2);
- Augmentation midLs = AugmentationData.getInstance().generateRandomAugmentation(76, 1);
- Augmentation noGradeLs = AugmentationData.getInstance().generateRandomAugmentation(76, 0);
- InventoryUpdate iu = new InventoryUpdate();
- int ls = item.getItemId();
- if (weapon == null) {
- player.sendMessage("You have to equip a weapon first.");
- return;
- }
- if (weapon.getItem().getCrystalType().getId() <= 3) {
- player.sendMessage("Fast Augmentation available only for A and S grade Weapons!");
- return;
- }
- if (weapon.isHeroItem()) {
- player.sendMessage("Hero weapons can't be augmented!");
- return;
- }
- if (weapon.isAugmented()) {
- removeAug(playable);
- } else {
- player.destroyItem("Consume", item.getObjectId(), 1, null, false);
- Augmentation augmentation;
- if (ls == 8762) {
- augmentation = topLs;
- } else if (ls == 8752) {
- augmentation = highLs;
- } else if (ls == 8742) {
- augmentation = midLs;
- } else if (ls == 8732) {
- augmentation = noGradeLs;
- } else {
- return;
- }
- weapon.setAugmentation(augmentation);
- iu.addModifiedItem(weapon);
- player.sendPacket(iu);
- player.broadcastUserInfo();
- if (weapon.getAugmentation().getSkill() == null) {
- player.sendMessage("No luck try again!");
- } else {
- checkAugmentResult(playable);
- }
- }
- }
- public static boolean removeAug(Playable playable) {
- Player player = (Player) playable;
- ItemInstance weapon = player.getInventory().getItemFrom(Paperdoll.RHAND);
- InventoryUpdate iu = new InventoryUpdate();
- weapon.getAugmentation().removeBonus(player);
- weapon.removeAugmentation(true);
- iu.addModifiedItem(weapon);
- player.sendPacket(iu);
- player.broadcastUserInfo();
- return true;
- }
- private static void checkAugmentResult(Playable playable) {
- Player player = (Player) playable;
- ItemInstance weapon = player.getInventory().getItemFrom(Paperdoll.RHAND);
- String name = weapon.getAugmentation().getSkill().getName();
- boolean isChance = weapon.getAugmentation().getSkill().isChance();
- boolean isActive = weapon.getAugmentation().getSkill().isActive();
- boolean isPassive = weapon.getAugmentation().getSkill().isPassive() && !isChance;
- InventoryUpdate iu = new InventoryUpdate();
- String type;
- if (isChance) {
- type = "CHANCE";
- } else if (isActive) {
- type = "ACTIVE";
- } else if (isPassive) {
- type = "PASSIVE";
- } else {
- return;
- }
- player.sendPacket(new CreatureSay(0, SayType.HERO_VOICE, "[" + type + "]", "You got " + name));
- sendMessage(player, type + " : You got " + name);
- player.broadcastPacket(new SocialAction(player, 3));
- player.disarmWeapon(true);
- iu.addModifiedItem(weapon);
- player.sendPacket(iu);
- player.broadcastUserInfo();
- }
- public static void sendMessage(final Player player, final String message) {
- player.sendPacket(new ExShowScreenMessage(message, 3000, ExShowScreenMessage.SMPOS.TOP_CENTER, true));
- player.sendMessage(message);
- }
- }
- net.sf.l2j.gameserver.handler.ItemHandler.java
- registerHandler(new FastAugmentation());
- and on your items xml file
- e.g gameserver/data/xml/items/8700-8799.xml
- add this
- <set name="handler" val="FastAugmentation" />
- It should be like this
- <item id="8762" type="EtcItem" name="Top-Grade Life Stone: level 76">
- <set name="material" val="LIQUID" />
- <set name="weight" val="2" />
- <set name="price" val="4800000" />
- <set name="handler" val="FastAugmentation" />
- <set name="is_stackable" val="true" />
- <cond msgId="113">
- <player level="76" />
- </cond>
- </item>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement