Changeset 3199
- Timestamp:
- 03/06/2010 07:26:11 AM (6 months ago)
- Location:
- trunk/src/arcemu-world
- Files:
-
- 4 modified
-
Object.cpp (modified) (1 diff)
-
Pet.cpp (modified) (2 diffs)
-
Pet.h (modified) (1 diff)
-
Player.cpp (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/arcemu-world/Object.cpp
r3194 r3199 2608 2608 } 2609 2609 2610 pPet->DelayedRemove( false , true);2610 pPet->DelayedRemove( false ); 2611 2611 } 2612 2612 /* ----------------------------- PET DEATH HANDLING END -------------- */ -
trunk/src/arcemu-world/Pet.cpp
r3138 r3199 844 844 } 845 845 846 void Pet::DelayedRemove( bool bTime, bool bDeath)846 void Pet::DelayedRemove( bool bTime, uint32 delay ) 847 847 { 848 848 // called when pet has died … … 855 855 } 856 856 else 857 sEventMgr.AddEvent(this, &Pet::DelayedRemove, true, bDeath, EVENT_PET_DELAYED_REMOVE, PET_DELAYED_REMOVAL_TIME, 1, EVENT_FLAG_DO_NOT_EXECUTE_IN_WORLD_CONTEXT);857 sEventMgr.AddEvent(this, &Pet::DelayedRemove, true, uint32(0), EVENT_PET_DELAYED_REMOVE, delay, 1, EVENT_FLAG_DO_NOT_EXECUTE_IN_WORLD_CONTEXT); 858 858 } 859 859 -
trunk/src/arcemu-world/Pet.h
r3138 r3199 168 168 void setDeathState(DeathState s); 169 169 170 void DelayedRemove(bool bTime, bool bDeath);170 void DelayedRemove(bool bTime, uint32 delay = PET_DELAYED_REMOVAL_TIME); 171 171 172 172 ARCEMU_INLINE Player* GetPetOwner() { return m_Owner; } -
trunk/src/arcemu-world/Player.cpp
r3181 r3199 6039 6039 if( pObj == summon ) 6040 6040 { 6041 if( summon->IsSummon() ) 6042 summon->Dismiss(); // summons 6043 else 6044 summon->Remove( true, false );// hunter pets 6041 summon->DelayedRemove(false,1);//otherwise Pet::Update() will access free'd memory 6045 6042 return; 6046 6043 } … … 6048 6045 6049 6046 if( pObj->GetGUID() == GetSummonedUnitGUID() ) 6050 RemoveFieldSummon();6047 sEventMgr.AddEvent(TO_UNIT(this), &Unit::RemoveFieldSummon, EVENT_SUMMON_EXPIRE, 1, 1, EVENT_FLAG_DO_NOT_EXECUTE_IN_WORLD_CONTEXT);//otherwise Creature::Update() will access free'd memory 6051 6048 } 6052 6049