I saw a request here and i thought of doing this simple code.
The code is gonna check just for Weapon & Chest. You can do the rest if you wish, same way, i was just too lazy to do them.
v1 => http://pastebin.com/QSN88Y6N
v2
Index: D:/workspace/L2_GameServer/java/com/l2jserver/gameserver/network/clientpackets/UseItem.java
===================================================================
--- D:/workspace/L2_GameServer/java/com/l2jserver/gameserver/network/clientpackets/UseItem.java (revision 4391)
+++ D:/workspace/L2_GameServer/java/com/l2jserver/gameserver/network/clientpackets/UseItem.java (working copy)
@@ -239,7 +239,8 @@
}
// Don't allow hero equipment and restricted items during Olympiad
- if (activeChar.isInOlympiadMode() && (item.isHeroItem() || item.isOlyRestrictedItem()))
+ if (activeChar.isInOlympiadMode() && (item.isHeroItem() || item.isOlyRestrictedItem() ||
+ activeChar.getActiveWeaponItem().getCrystalType() == L2Item.CRYSTAL_S))
{
activeChar.sendPacket(new SystemMessage(SystemMessageId.THIS_ITEM_CANT_BE_EQUIPPED_FOR_THE_OLYMPIAD_EVENT));
return;
Index: D:/workspace/L2_GameServer/java/com/l2jserver/gameserver/model/olympiad/OlympiadGame.java
===================================================================
--- D:/workspace/L2_GameServer/java/com/l2jserver/gameserver/model/olympiad/OlympiadGame.java (revision 4391)
+++ D:/workspace/L2_GameServer/java/com/l2jserver/gameserver/model/olympiad/OlympiadGame.java (working copy)
@@ -48,6 +48,7 @@
import com.l2jserver.gameserver.network.serverpackets.SystemMessage;
import com.l2jserver.gameserver.templates.StatsSet;
import com.l2jserver.gameserver.templates.chars.L2NpcTemplate;
+import com.l2jserver.gameserver.templates.item.L2Item;
import com.l2jserver.util.L2FastList;
@@ -269,6 +270,38 @@
}
player.checkItemRestriction();
+
+ int weaponGrade = player.getActiveWeaponItem().getCrystalType();
+ if (weaponGrade == L2Item.CRYSTAL_S)
+ {
+ L2ItemInstance[] unequipped = player.getInventory().unEquipItemInBodySlotAndRecord(weaponGrade);
+ InventoryUpdate iu = new InventoryUpdate();
+ for (L2ItemInstance element : unequipped)
+ iu.addModifiedItem(element);
+ player.sendPacket(iu);
+ player.abortAttack();
+ player.broadcastUserInfo();
+
+ // this can be 0 if the user pressed the right mousebutton twice very fast
+ if (unequipped.length > 0)
+ {
+ if (unequipped[0].isWear())
+ return;
+ SystemMessage sm = null;
+ if (unequipped[0].getEnchantLevel() > 0)
+ {
+ sm = new SystemMessage(SystemMessageId.EQUIPMENT_S1_S2_REMOVED);
+ sm.addNumber(unequipped[0].getEnchantLevel());
+ sm.addItemName(unequipped[0]);
+ }
+ else
+ {
+ sm = new SystemMessage(SystemMessageId.S1_DISARMED);
+ sm.addItemName(unequipped[0]);
+ }
+ player.sendPacket(sm);
+ }
+ }
// Remove shot automation
player.disableAutoShotsAll();
Good luck.