Changeset 5161


Ignore:
Timestamp:
Jan 30, 2012 9:12:19 AM (4 months ago)
Author:
Zoey76
Message:

BETA: Fix for disarm weapon logic:

  • If there is no weapon to disarm should return true. Typo from [5049].
  • Fixes check with mounts.
  • Fixes check with Rent Pets.
  • Added some comments and fixed some JavaDocs?.


Thanks burrito.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/unstable/L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java

    r5155 r5161  
    66056605        /** 
    66066606         * Disarm the player's weapon. 
    6607          * @return true if the player was disarmed, false otherwise. 
     6607         * @return {@code true} if the player was disarmed or doesn't have a weapon to disarm, {@code false} otherwise. 
    66086608         */ 
    66096609        public boolean disarmWeapons() 
    66106610        { 
     6611                // If there is no weapon to disarm then return true. 
     6612                final L2ItemInstance wpn = getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND); 
     6613                if (wpn == null) 
     6614                { 
     6615                        return true; 
     6616                } 
     6617                 
    66116618                // Don't allow disarming a cursed weapon 
    6612                 if (isCursedWeaponEquipped())  
     6619                if (isCursedWeaponEquipped()) 
     6620                { 
    66136621                        return false; 
    6614                  
    6615                 // Don't allow disarming a Combat Flag or Territory Ward 
    6616                 else if (isCombatFlagEquipped())  
     6622                } 
     6623                 
     6624                // Don't allow disarming a Combat Flag or Territory Ward. 
     6625                if (isCombatFlagEquipped()) 
     6626                { 
    66176627                        return false; 
    6618                  
    6619                 // Unequip the weapon 
    6620                 L2ItemInstance wpn = getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND); 
    6621                 if (wpn == null) 
     6628                } 
     6629                 
     6630                // Don't allow disarming if the weapon is force equip. 
     6631                if (wpn.getWeaponItem().isForceEquip()) 
    66226632                { 
    66236633                        return false; 
    66246634                } 
    6625                 else if (wpn.getWeaponItem().isForceEquip()) 
    6626                 { 
    6627                         return false; 
    6628                 } 
    6629                 else 
    6630                 { 
    6631                         L2ItemInstance[] unequiped = getInventory().unEquipItemInBodySlotAndRecord(wpn.getItem().getBodyPart()); 
    6632                         InventoryUpdate iu = new InventoryUpdate(); 
    6633                         for (L2ItemInstance itm: unequiped) 
    6634                                 iu.addModifiedItem(itm); 
    6635                         sendPacket(iu); 
    6636                          
    6637                         abortAttack(); 
    6638                         broadcastUserInfo(); 
    6639                          
    6640                         // this can be 0 if the user pressed the right mousebutton twice very fast 
    6641                         if (unequiped.length > 0) 
    6642                         { 
    6643                                 SystemMessage sm = null; 
    6644                                 if (unequiped[0].getEnchantLevel() > 0) 
    6645                                 { 
    6646                                         sm = SystemMessage.getSystemMessage(SystemMessageId.EQUIPMENT_S1_S2_REMOVED); 
    6647                                         sm.addNumber(unequiped[0].getEnchantLevel()); 
    6648                                         sm.addItemName(unequiped[0]); 
    6649                                 } 
    6650                                 else 
    6651                                 { 
    6652                                         sm = SystemMessage.getSystemMessage(SystemMessageId.S1_DISARMED); 
    6653                                         sm.addItemName(unequiped[0]); 
    6654                                 } 
    6655                                 sendPacket(sm); 
    6656                         } 
     6635                 
     6636                final L2ItemInstance[] unequiped = getInventory().unEquipItemInBodySlotAndRecord(wpn.getItem().getBodyPart()); 
     6637                final InventoryUpdate iu = new InventoryUpdate(); 
     6638                for (L2ItemInstance itm: unequiped) 
     6639                { 
     6640                        iu.addModifiedItem(itm); 
     6641                } 
     6642                 
     6643                sendPacket(iu); 
     6644                abortAttack(); 
     6645                broadcastUserInfo(); 
     6646                 
     6647                // This can be 0 if the user pressed the right mousebutton twice very fast. 
     6648                if (unequiped.length > 0) 
     6649                { 
     6650                        final SystemMessage sm; 
     6651                        if (unequiped[0].getEnchantLevel() > 0) 
     6652                        { 
     6653                                sm = SystemMessage.getSystemMessage(SystemMessageId.EQUIPMENT_S1_S2_REMOVED); 
     6654                                sm.addNumber(unequiped[0].getEnchantLevel()); 
     6655                                sm.addItemName(unequiped[0]); 
     6656                        } 
     6657                        else 
     6658                        { 
     6659                                sm = SystemMessage.getSystemMessage(SystemMessageId.S1_DISARMED); 
     6660                                sm.addItemName(unequiped[0]); 
     6661                        } 
     6662                        sendPacket(sm); 
    66576663                } 
    66586664                return true; 
     
    66606666         
    66616667        /** 
    6662          * Disarm the player's shield.<BR><BR> 
    6663          * @return  
     6668         * Disarm the player's shield. 
     6669         * @return {@code true}. 
    66646670         */ 
    66656671        public boolean disarmShield() 
Note: See TracChangeset for help on using the changeset viewer.