Changeset 2285

Show
Ignore:
Timestamp:
07/15/08 18:35:01 (3 months ago)
Author:
DrHouse
Message:

Following [2545], synchronizing _activeSoulShots while iterating. Check Julian's post for further details: http://www.l2jserver.com/forum/thread.php?postid=177664#post177664

Fixes #2660 , thanks Ky6uk for reporting

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/L2_GameServer/java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java

    r2284 r2285  
    84468446                if (_activeSoulShots == null || _activeSoulShots.size() == 0) 
    84478447                        return; 
    8448  
    8449                 for (int itemId : _activeSoulShots.values()) 
    8450                 { 
    8451                        item = getInventory().getItemByItemId(itemId); 
    8452  
    8453                         if (item != null
     8448                 
     8449                Collection<Integer> vals = _activeSoulShots.values(); 
     8450                 
     8451                synchronized (_activeSoulShots) 
     8452                { 
     8453                        for (int itemId : vals
    84548454                        { 
    8455                 if (magic) 
    8456                 { 
    8457                     if (!summon) 
    8458                     { 
    8459                         if (itemId == 2509 || itemId == 2510 || itemId == 2511 || 
    8460                                 itemId == 2512 || itemId == 2513 || itemId == 2514 || 
    8461                                 itemId == 3947 || itemId == 3948 || itemId == 3949 || 
    8462                                 itemId == 3950 || itemId == 3951 || itemId == 3952 || 
    8463                                 itemId == 5790) 
    8464                         { 
    8465                             handler = ItemHandler.getInstance().getItemHandler(itemId); 
    8466  
    8467                             if (handler != null) 
    8468                                 handler.useItem(this, item); 
    8469                         } 
    8470                     } else 
    8471                     { 
    8472                         if (itemId == 6646 || itemId == 6647) 
    8473                         { 
    8474                             handler = ItemHandler.getInstance().getItemHandler(itemId); 
    8475  
    8476                             if (handler != null) 
    8477                                 handler.useItem(this, item); 
    8478                         } 
    8479                     } 
    8480                 } 
    8481  
    8482                 if (physical) 
    8483                 { 
    8484                     if (!summon) 
    8485                     { 
    8486                         if (itemId == 1463 || itemId == 1464 || itemId == 1465 || itemId == 1466 || itemId == 1467 || itemId == 1835 || itemId == 5789 /*|| 
    8487                                 itemId == 6535 || itemId == 6536 || itemId == 6537 || itemId == 6538 || itemId == 6539 || itemId == 6540*/) 
    8488                         { 
    8489                             handler = ItemHandler.getInstance().getItemHandler(itemId); 
    8490  
    8491                             if (handler != null) 
    8492                                 handler.useItem(this, item); 
    8493                         } 
    8494                     } else 
    8495                     { 
    8496                         if (itemId == 6645) 
    8497                         { 
    8498                             handler = ItemHandler.getInstance().getItemHandler(itemId); 
    8499  
    8500                             if (handler != null) 
    8501                                 handler.useItem(this, item); 
    8502                         } 
    8503                     } 
    8504                 } 
    8505                         } 
    8506                         else 
    8507                         { 
    8508                                 removeAutoSoulShot(itemId); 
     8455                                item = getInventory().getItemByItemId(itemId); 
     8456                                 
     8457                                if (item != null) 
     8458                                { 
     8459                                        if (magic) 
     8460                                        { 
     8461                                                if (!summon) 
     8462                                                { 
     8463                                                        if (itemId == 2509 || itemId == 2510 
     8464                                                                || itemId == 2511 || itemId == 2512 
     8465                                                                || itemId == 2513 || itemId == 2514 
     8466                                                                || itemId == 3947 || itemId == 3948 
     8467                                                                || itemId == 3949 || itemId == 3950 
     8468                                                                || itemId == 3951 || itemId == 3952 
     8469                                                                || itemId == 5790) 
     8470                                                        { 
     8471                                                                handler = ItemHandler.getInstance().getItemHandler(itemId); 
     8472                                                                 
     8473                                                                if (handler != null) 
     8474                                                                        handler.useItem(this, item); 
     8475                                                        } 
     8476                                                } 
     8477                                                else 
     8478                                                { 
     8479                                                        if (itemId == 6646 || itemId == 6647) 
     8480                                                        { 
     8481                                                                handler = ItemHandler.getInstance().getItemHandler(itemId); 
     8482                                                                 
     8483                                                                if (handler != null) 
     8484                                                                        handler.useItem(this, item); 
     8485                                                        } 
     8486                                                } 
     8487                                        } 
     8488                                         
     8489                                        if (physical) 
     8490                                        { 
     8491                                                if (!summon) 
     8492                                                { 
     8493                                                        if (itemId == 1463 || itemId == 1464 
     8494                                                                || itemId == 1465 || itemId == 1466 
     8495                                                                || itemId == 1467 || itemId == 1835 
     8496                                                                || itemId == 5789 /* 
     8497                                                                                                         * || itemId == 6535 || 
     8498                                                                                                         * itemId == 6536 || itemId 
     8499                                                                                                         * == 6537 || itemId == 6538 
     8500                                                                                                         * || itemId == 6539 || 
     8501                                                                                                         * itemId == 6540 
     8502                                                                                                         */) 
     8503                                                        { 
     8504                                                                handler = ItemHandler.getInstance().getItemHandler(itemId); 
     8505                                                                 
     8506                                                                if (handler != null) 
     8507                                                                        handler.useItem(this, item); 
     8508                                                        } 
     8509                                                } 
     8510                                                else 
     8511                                                { 
     8512                                                        if (itemId == 6645) 
     8513                                                        { 
     8514                                                                handler = ItemHandler.getInstance().getItemHandler(itemId); 
     8515                                                                 
     8516                                                                if (handler != null) 
     8517                                                                        handler.useItem(this, item); 
     8518                                                        } 
     8519                                                } 
     8520                                        } 
     8521                                } 
     8522                                else 
     8523                                { 
     8524                                        removeAutoSoulShot(itemId); 
     8525                                } 
    85098526                        } 
    85108527                }