Changeset 3148
- Timestamp:
- 02/03/2010 04:40:07 AM (5 weeks ago)
- Files:
-
- 1 modified
-
trunk/src/arcemu-world/Creature.cpp (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/arcemu-world/Creature.cpp
r3131 r3148 742 742 void Creature::RemoveFromWorld( bool addrespawnevent, bool free_guid ) 743 743 { 744 745 //remove ai stuff 746 sEventMgr.RemoveEvents( this, EVENT_CREATURE_AISPELL ); 747 748 if( GetScript() != NULL ) 749 { 750 GetScript()->Destroy(); 751 _myScriptClass = NULL; 752 } 753 754 RemoveAllAuras(); 755 756 // If we have a summons then let's remove them 757 RemoveAllGuardians(); 758 759 // remove our reference from owner 760 if( m_owner != NULL ) 761 { 762 m_owner->RemoveGuardianRef( this ); 763 m_owner = NULL; 764 } 765 766 if( IsInWorld() ) 767 { 768 if( IsPet() ) 769 { 770 static_cast<Pet*>(this)->ScheduledForDeletion = true; 771 Unit::RemoveFromWorld( true ); 772 SafeDelete(); 773 return; 774 } 775 776 uint32 delay = 0; 777 if( addrespawnevent && ( m_respawnTimeOverride > 0 || ( proto && proto->RespawnTime > 0 ) ) ) 778 delay = m_respawnTimeOverride > 0 ? m_respawnTimeOverride : proto->RespawnTime; 779 780 Despawn( 0, delay ); 781 } 744 uint32 delay = 0; 745 if( addrespawnevent && ( m_respawnTimeOverride > 0 || ( proto && proto->RespawnTime > 0 ) ) ) 746 delay = m_respawnTimeOverride > 0 ? m_respawnTimeOverride : proto->RespawnTime; 747 748 Despawn( 0, delay ); 782 749 } 783 750 … … 1867 1834 } 1868 1835 1836 //remove ai stuff 1837 sEventMgr.RemoveEvents( this, EVENT_CREATURE_AISPELL ); 1838 1839 if( GetScript() != NULL ) 1840 { 1841 GetScript()->Destroy(); 1842 _myScriptClass = NULL; 1843 } 1844 1845 RemoveAllAuras(); 1846 1847 // If we have a summons then let's remove them 1848 RemoveAllGuardians(); 1849 1850 // remove our reference from owner 1851 if( m_owner != NULL ) 1852 { 1853 m_owner->RemoveGuardianRef( this ); 1854 m_owner = NULL; 1855 } 1856 1869 1857 if(!IsInWorld()) 1870 1858 return; … … 1878 1866 } 1879 1867 1868 if( IsPet() ) 1869 { 1870 static_cast<Pet*>(this)->ScheduledForDeletion = true; 1871 Unit::RemoveFromWorld( true ); 1872 SafeDelete(); 1873 return; 1874 } 1875 1880 1876 if(respawntime && !m_noRespawn) 1881 1877 {