As i was going through some old files i found this code that i made a while ago
its pretty simple and can be improved for sure but i got no interest on it anymore .
The code checks what type of life stone it is Mid High Top etc. and augments the weapon based on the augment rate of your server if its a skill it will disarm weapon and show you the name and type of skill .
for example
player.sendPacket(new CreatureSay(0, SayType.HERO_VOICE, "[" + type + "]", "You got " + name));
sendMessage(player, type + " : You got " + name);
you also have to register it on your 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
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>
it can be easily adapted for any l2j pack the code above is for aCis 398? if not mistaken
BACKUPCODE
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);
}
}
Pastebin
Have fun and enjoy
Author : RKolibri
Credits : RKolibri