Show
Ignore:
Timestamp:
11/22/08 00:35:41 (17 years ago)
Author:
yumileroy
Message:

Delete possessed AI only on creature delete.

Original author: gvcoman
Date: 2008-11-16 14:38:02-05:00

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/src/game/Item.cpp

    r260 r272  
    1111 * This program is distributed in the hope that it will be useful, 
    1212 * but WITHOUT ANY WARRANTY; without even the implied warranty of 
    13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
     13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 
    1414 * GNU General Public License for more details. 
    1515 * 
    1616 * You should have received a copy of the GNU General Public License 
    1717 * along with this program; if not, write to the Free Software 
    18  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
     18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 
    1919 */ 
    2020 
     
    180180                    return true; 
    181181                case ITEM_SUBCLASS_SOUL_CONTAINER: 
    182                     if(!(pProto->BagFamily & BAG_FAMILY_MASK_SOUL_SHARDS)) 
     182                    if(!(pProto->BagFamily & BAG_FAMILY_MASK_SHARDS)) 
    183183                        return false; 
    184184                    return true; 
     
    248248    Object::_Create( guidlow, 0, HIGHGUID_ITEM ); 
    249249 
    250     SetEntry(itemid); 
     250    SetUInt32Value(OBJECT_FIELD_ENTRY, itemid); 
    251251    SetFloatValue(OBJECT_FIELD_SCALE_X, 1.0f); 
    252252 
     
    430430ItemPrototype const *Item::GetProto() const 
    431431{ 
    432     return objmgr.GetItemPrototype(GetEntry()); 
     432    return objmgr.GetItemPrototype(GetUInt32Value(OBJECT_FIELD_ENTRY)); 
    433433} 
    434434 
     
    763763{ 
    764764    // Better lost small time at check in comparison lost time at item save to DB. 
    765     if((GetEnchantmentId(slot) == id) && (GetEnchantmentDuration(slot) == duration) && (GetEnchantmentCharges(slot) == charges)) 
     765    if( GetUInt32Value(ITEM_FIELD_ENCHANTMENT + slot*MAX_ENCHANTMENT_OFFSET + ENCHANTMENT_ID_OFFSET)==id && 
     766        GetUInt32Value(ITEM_FIELD_ENCHANTMENT + slot*MAX_ENCHANTMENT_OFFSET + ENCHANTMENT_DURATION_OFFSET)==duration && 
     767        GetUInt32Value(ITEM_FIELD_ENCHANTMENT + slot*MAX_ENCHANTMENT_OFFSET + ENCHANTMENT_CHARGES_OFFSET)==charges ) 
    766768        return; 
    767769 
     
    774776void Item::SetEnchantmentDuration(EnchantmentSlot slot, uint32 duration) 
    775777{ 
    776     if(GetEnchantmentDuration(slot) == duration) 
     778    if(GetUInt32Value(ITEM_FIELD_ENCHANTMENT + slot*MAX_ENCHANTMENT_OFFSET + ENCHANTMENT_DURATION_OFFSET)==duration) 
    777779        return; 
    778780 
     
    783785void Item::SetEnchantmentCharges(EnchantmentSlot slot, uint32 charges) 
    784786{ 
    785     if(GetEnchantmentCharges(slot) == charges) 
    786         return; 
    787  
    788787    SetUInt32Value(ITEM_FIELD_ENCHANTMENT + slot*MAX_ENCHANTMENT_OFFSET + ENCHANTMENT_CHARGES_OFFSET,charges); 
    789788    SetState(ITEM_CHANGED); 
     
    792791void Item::ClearEnchantment(EnchantmentSlot slot) 
    793792{ 
    794     if(!GetEnchantmentId(slot)) 
    795         return; 
    796  
    797     for(uint8 x = 0; x < 3; ++x) 
    798         SetUInt32Value(ITEM_FIELD_ENCHANTMENT + slot*MAX_ENCHANTMENT_OFFSET + x, 0); 
     793    if(!GetUInt32Value(ITEM_FIELD_ENCHANTMENT + slot*MAX_ENCHANTMENT_OFFSET + ENCHANTMENT_ID_OFFSET)) 
     794        return; 
     795 
     796    for(int x=0;x<3;x++) 
     797        SetUInt32Value(ITEM_FIELD_ENCHANTMENT + slot*MAX_ENCHANTMENT_OFFSET + x,0); 
    799798    SetState(ITEM_CHANGED); 
    800799}