rendered paste bodyIndex: Object.cpp===================================================================--- Object.cpp (revision 1395)+++ Object.cpp (working copy)@@ -2908,6 +2908,18 @@ return float2int32(cost); // Truncate zeh decimals! } +bool Object::IsGiveXPorHonor(PlayerPointer plr, UnitPointer Target)+{+ if( Target->IsCreature() )+ if( Target->IsPet() || CalculateXpToGive(Target, plr ) <= 0 ) + return false;++ if( Target->IsPlayer() )+ if( HonorHandler::CalculateHonorPointsForKill( plr , Target ) <= 0 )+ return false;+ return true;+}+ void Object::CastSpell( ObjectPointer Target, SpellEntry* Sp, bool triggered ) { if( Sp == NULL )Index: Object.h===================================================================--- Object.h (revision 1395)+++ Object.h (working copy)@@ -173,6 +173,7 @@ HEARTHSTONE_INLINE bool IsCreature() { return m_objectTypeId == TYPEID_UNIT; } HEARTHSTONE_INLINE bool IsVehicle() { return m_isVehicle; } bool IsPet();+ bool IsGiveXPorHonor(PlayerPointer plr, UnitPointer Target); //! This includes any nested objects we have, inventory for example. virtual uint32 __fastcall BuildCreateUpdateBlockForPlayer( ByteBuffer *data, PlayerPointer target );Index: SpellAuras.cpp===================================================================--- SpellAuras.cpp (revision 1395)+++ SpellAuras.cpp (working copy)@@ -6652,42 +6652,33 @@ } else {- if(m_target->GetTypeId() == TYPEID_UNIT && TO_CREATURE(m_target)->GetCreatureName())+ if(m_target && m_target->isDead()) {- if(TO_CREATURE(m_target)->GetCreatureName()->Type != CRITTER)- {- if(m_target->isDead())- {- PlayerPointer pCaster = m_target->GetMapMgr()->GetPlayer((uint32)m_casterGuid);- if(!pCaster)- return;- - uint32 itemid = GetSpellProto()->EffectItemType[mod->i];- if(itemid == 6265 && int32(pCaster->getLevel() - m_target->getLevel()) > 9)- return;+ PlayerPointer pCaster = m_target->GetMapMgr()->GetPlayer((uint32)m_casterGuid);+ if(!pCaster)+ return; - ItemPrototype *proto = ItemPrototypeStorage.LookupEntry(itemid);- if(pCaster->GetItemInterface()->CalculateFreeSlots(proto) > 0)- {- ItemPointer item = objmgr.CreateItem(itemid,pCaster);- if(!item) return;+ uint32 itemid = GetSpellProto()->EffectItemType[mod->i];+ if(itemid == 6265 && pCaster->IsGiveXPorHonor(pCaster, m_target ) == false )+ return; -- item->SetUInt64Value(ITEM_FIELD_CREATOR,pCaster->GetGUID());- if(!pCaster->GetItemInterface()->AddItemToFreeSlot(item))- {- pCaster->GetItemInterface()->BuildInventoryChangeError(NULLITEM, NULLITEM, INV_ERR_INVENTORY_FULL);- item->Destructor();- item = NULLITEM;- return;- }- /*WorldPacket data(45);- pCaster->GetSession()->BuildItemPushResult(&data, pCaster->GetGUID(), 1, 1, itemid ,0,0xFF,1,0xFFFFFFFF);- pCaster->SendMessageToSet(&data, true); */- SlotResult * lr = pCaster->GetItemInterface()->LastSearchResult();- pCaster->GetSession()->SendItemPushResult(item,true,false,true,true,lr->ContainerSlot,lr->Slot,1);- }+ ItemPrototype *proto = ItemPrototypeStorage.LookupEntry(itemid);+ if(pCaster->GetItemInterface()->CalculateFreeSlots(proto) > 0)+ {+ ItemPointer item = objmgr.CreateItem(itemid,pCaster);+ if(!item) return;+ + item->SetUInt64Value(ITEM_FIELD_CREATOR,pCaster->GetGUID());+ if(!pCaster->GetItemInterface()->AddItemToFreeSlot(item))+ {+ pCaster->GetItemInterface()->BuildInventoryChangeError(NULLITEM, NULLITEM, INV_ERR_INVENTORY_FULL);+ item->Destructor();+ item = NULLITEM;+ return; }+ + SlotResult * lr = pCaster->GetItemInterface()->LastSearchResult();+ pCaster->GetSession()->SendItemPushResult(item,true,false,true,true,lr->ContainerSlot,lr->Slot,1); } } }@@ -9621,4 +9612,4 @@ mod->m_amount = 4; }break; }-}\ No newline at end of file+}Index: Unit.cpp===================================================================--- Unit.cpp (revision 1395)+++ Unit.cpp (working copy)@@ -2008,7 +2008,7 @@ case 50475: { //heal him :)- if( dmg )+ if( dmg && IsGiveXPorHonor(plr_shared_from_this(), victim)) { int32 toheal = (int32)(dmg * 0.04); Heal( unit_shared_from_this(), 50475, toheal );