rendered paste bodyIndex: /java/net/sf/l2j/gameserver/serverpackets/Ride.java
===================================================================
--- /java/net/sf/l2j/gameserver/serverpackets/Ride.java (revision 1121)
+++ /java/net/sf/l2j/gameserver/serverpackets/Ride.java (working copy)
@@ -17,7 +17,13 @@
* http://www.gnu.org/copyleft/gpl.html
*/
package net.sf.l2j.gameserver.serverpackets;
+import net.sf.l2j.gameserver.model.L2ItemInstance;
+import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
+import net.sf.l2j.gameserver.model.Inventory;
+import net.sf.l2j.gameserver.network.SystemMessageId;
+import javolution.util.FastList;
+
public class Ride extends L2GameServerPacket
{
private static final String _S__86_Ride = "[S] 86 Ride";
@@ -28,35 +34,87 @@
private int _rideType;
private int _rideClassID;
+ /**
+ * 0x86 Ride dddd
+ * @param _
+ */
public Ride(int id, int action, int rideClassId)
+ {
+ _id = id;
+ _bRide = action; // 1 for mount ; 2 for dismount
+ _rideClassID = rideClassId + 1000000;
+ _rideType = rideClassId == 12621 ? (short) 2 : (short) 1; // 2 for wyvern; 1 for other
+ }
+ public int getMountType()
{
- _id = id; // charobjectID
- _bRide = action; // 1 for mount ; 2 for dismount
- _rideClassID = rideClassId + 1000000; // npcID
-
- if (rideClassId == 12526 || //wind strider
- rideClassId == 12527 || //star strider
- rideClassId == 12528) //twilight strider
- {
- _rideType = 1; // 1 for Strider ; 2 for wyvern
- }
- else if (rideClassId == 12621) // wyvern
- {
- _rideType = 2; // 1 for Strider ; 2 for wyvern
- }
+ return _rideType;
}
-
@Override
public void runImpl()
{
+ L2PcInstance cha = getClient().getActiveChar();
+ if(cha == null)
+ return;
+ if(cha.isCursedWeaponEquiped())
+ return;
- }
+ if(_bRide != 1)
+ return;
+ FastList<L2ItemInstance> modified = new FastList<L2ItemInstance>();
+
+ //Check for slots that can have weapons
+ L2ItemInstance wpn = cha.getInventory().getPaperdollItem(Inventory.PAPERDOLL_LHAND);
+ if(wpn != null)
+ {
+ modified.add(wpn);
+ sendDisarmMessage(wpn, cha);
+ }
+ cha.getInventory().unEquipItemInSlot(Inventory.PAPERDOLL_LHAND);
+
+ wpn = cha.getInventory().getPaperdollItem(Inventory.PAPERDOLL_LRHAND);
+ if(wpn != null)
+ {
+ modified.add(wpn);
+ sendDisarmMessage(wpn, cha);
+ }
+ cha.getInventory().unEquipItemInSlot(Inventory.PAPERDOLL_LRHAND);
+
+ wpn = cha.getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND);
+ if(wpn != null)
+ {
+ modified.add(wpn);
+ sendDisarmMessage(wpn, cha);
+ }
+ cha.getInventory().unEquipItemInSlot(Inventory.PAPERDOLL_RHAND);
+
+ cha.refreshExpertisePenalty();
+ cha.abortAttack();
+ cha.abortCast();
+ cha.broadcastUserInfo();
+
+ InventoryUpdate iu = new InventoryUpdate();
+ for(L2ItemInstance i : modified)
+ iu.addItem(i);
+ cha.sendPacket(iu);
+ }
+ private void sendDisarmMessage(L2ItemInstance wpn, L2PcInstance cha)
+ {
+ if(wpn.getEnchantLevel() > 0)
+ {
+ SystemMessage sm = new SystemMessage(SystemMessageId.EQUIPMENT_S1_S2_REMOVED);
+ sm.addNumber(wpn.getEnchantLevel());
+ sm.addItemName(wpn.getItemId());
+ cha.sendPacket(sm);
+ }
+ else
+ {
+ SystemMessage sm = new SystemMessage(SystemMessageId.S1_DISARMED);
+ sm.addItemName(wpn.getItemId());
+ cha.sendPacket(sm);
+ }
+ }
- public int getMountType()
- {
- return _rideType;
- }
-
+ @Override
protected final void writeImpl()
{
@@ -70,6 +128,7 @@
/* (non-Javadoc)
* @see net.sf.l2j.gameserver.serverpackets.ServerBasePacket#getType()
*/
+ @Override
public String getType()
{
return _S__86_Ride;