diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/DataStores/DBCEnums.h | 2 | ||||
-rw-r--r-- | src/server/game/Entities/Creature/TemporarySummon.cpp | 9 |
2 files changed, 9 insertions, 2 deletions
diff --git a/src/server/game/DataStores/DBCEnums.h b/src/server/game/DataStores/DBCEnums.h index fe3a6dd6ead..802b7bd16e3 100644 --- a/src/server/game/DataStores/DBCEnums.h +++ b/src/server/game/DataStores/DBCEnums.h @@ -2110,7 +2110,7 @@ enum class SummonPropertiesFlags : uint32 DespawnOnSummonerDeath = 0x00000008, // NYI OnlyVisibleToSummoner = 0x00000010, CannotDismissPet = 0x00000020, // NYI - UseDemonTimeout = 0x00000040, // NYI + UseDemonTimeout = 0x00000040, UnlimitedSummons = 0x00000080, // NYI UseCreatureLevel = 0x00000100, JoinSummonerSpawnGroup = 0x00000200, // NYI diff --git a/src/server/game/Entities/Creature/TemporarySummon.cpp b/src/server/game/Entities/Creature/TemporarySummon.cpp index f3a6f35770d..95a7f9c19ff 100644 --- a/src/server/game/Entities/Creature/TemporarySummon.cpp +++ b/src/server/game/Entities/Creature/TemporarySummon.cpp @@ -193,7 +193,14 @@ void TempSummon::InitStats(WorldObject* summoner, Milliseconds duration) m_lifetime = duration; if (m_type == TEMPSUMMON_MANUAL_DESPAWN) - m_type = (duration <= 0ms) ? TEMPSUMMON_DEAD_DESPAWN : TEMPSUMMON_TIMED_DESPAWN; + { + if (duration <= 0s) + m_type = TEMPSUMMON_DEAD_DESPAWN; + else if (m_Properties && m_Properties->GetFlags().HasFlag(SummonPropertiesFlags::UseDemonTimeout)) + m_type = TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT; + else + m_type = TEMPSUMMON_TIMED_DESPAWN; + } if (summoner && summoner->IsPlayer()) { |