Index: I:/workspace/L2_GameServer/java/com/l2jstep/gameserver/network/clientpackets/UseItem.java
===================================================================
--- I:/workspace/L2_GameServer/java/com/l2jstep/gameserver/network/clientpackets/UseItem.java (revision 4167)
+++ I:/workspace/L2_GameServer/java/com/l2jstep/gameserver/network/clientpackets/UseItem.java (working copy)
@@ -97,6 +97,14 @@
if (activeChar.getActiveTradeList() != null)
activeChar.cancelActiveTrade();
+
+ int weaponGrade = activeChar.getActiveWeaponItem().getCrystalType();
+ int armorGrade = activeChar.getActiveChestArmorItem().getCrystalType();
+ if (activeChar.isInOlympiadMode() && (weaponGrade == L2Item.CRYSTAL_S || armorGrade == L2Item.CRYSTAL_S))
+ {
+ activeChar.sendMessage("You cannot use S grade equipment at the Grand Olympiad games.");
+ return;
+ }
// NOTE: disabled due to deadlocks
// synchronized (activeChar.getInventory())
Index: I:/workspace/L2_GameServer/java/com/l2jstep/gameserver/model/olympiad/Olympiad.java
===================================================================
--- I:/workspace/L2_GameServer/java/com/l2jstep/gameserver/model/olympiad/Olympiad.java (revision 4167)
+++ I:/workspace/L2_GameServer/java/com/l2jstep/gameserver/model/olympiad/Olympiad.java (working copy)
@@ -50,6 +50,7 @@
import com.l2jserver.gameserver.network.serverpackets.NpcHtmlMessage;
import com.l2jserver.gameserver.network.serverpackets.SystemMessage;
import com.l2jserver.gameserver.templates.StatsSet;
+import com.l2jserver.gameserver.templates.L2Item;
import com.l2jserver.util.L2FastList;
import javolution.util.FastMap;
@@ -482,6 +483,14 @@
* return false; }
*/
+ int weaponGrade = noble.getActiveWeaponItem().getCrystalType();
+ int armorGrade = noble.getActiveChestArmorItem().getCrystalType();
+ if (weaponGrade == L2Item.CRYSTAL_S || armorGrade == L2Item.CRYSTAL_S)
+ {
+ noble.sendMessage("You cannot join the grand olympiad games using S grade equipment.");
+ return false;
+ }
+
if (!_inCompPeriod)
{
sm = new SystemMessage(SystemMessageId.THE_OLYMPIAD_GAME_IS_NOT_CURRENTLY_IN_PROGRESS);
By @ThelwHelpRePaidia
Index: java/net/sf/l2j/gameserver/model/item/kind/Item.java
===================================================================
--- java/net/sf/l2j/gameserver/model/item/kind/Item.java (revision 2)
+++ java/net/sf/l2j/gameserver/model/item/kind/Item.java (working copy)
@@ -477,7 +477,7 @@
public boolean checkCondition(L2Character activeChar, L2Object target, boolean sendMessage)
{
// Don't allow hero equipment and restricted items during Olympiad
- if ((isOlyRestrictedItem() || isHeroItem()) && ((activeChar instanceof L2PcInstance) && activeChar.getActingPlayer().isInOlympiadMode()))
+ if ((isOlyRestrictedItem() || isOlyRestrictedItemByGrade() || isHeroItem()) && ((activeChar instanceof L2PcInstance) && activeChar.getActingPlayer().isInOlympiadMode()))
{
if (isEquipable())
activeChar.getActingPlayer().sendPacket(SystemMessageId.THIS_ITEM_CANT_BE_EQUIPPED_FOR_THE_OLYMPIAD_EVENT);
@@ -550,6 +550,11 @@
return _isOlyRestricted;
}
+ public boolean isOlyRestrictedItemByGrade()
+ {
+ return (getCrystalType() == CrystalType.S);
+ }
+
public boolean isPetItem()
{
return (getItemType() == ArmorType.PET || getItemType() == WeaponType.PET);
Up by @Trance