From ae687002d1680e5d1bfe6a0eb74ffe5b279b0199 Mon Sep 17 00:00:00 2001 From: Shauren Date: Sun, 19 May 2024 00:55:24 +0200 Subject: Core/Spells: Implemented SummonPropertiesFlags::UseDemonTimeout Closes #29930 (cherry picked from commit c15c8609f0b950804ce798369bd7c3f54b5ab221) --- src/server/game/DataStores/DBCEnums.h | 2 +- src/server/game/Entities/Creature/TemporarySummon.cpp | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/server/game/DataStores/DBCEnums.h b/src/server/game/DataStores/DBCEnums.h index 61140dd8173..cd7d178d1e3 100644 --- a/src/server/game/DataStores/DBCEnums.h +++ b/src/server/game/DataStores/DBCEnums.h @@ -2099,7 +2099,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()) { -- cgit v1.2.3