aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHenry Gordon <henrytgordon@gmail.com>2016-04-16 06:02:47 -0400
committerDDuarte <dnpd.dd@gmail.com>2016-04-16 16:52:55 +0100
commit1670d310b54323c9a3b2acefe81875c7b46aacff (patch)
tree98205a9ed24f36ca0dde930dc6cc100d86ccc763
parentfe90fdcba178d490c39299ae0339811744f30b8c (diff)
Core/Instances: If a boss kills itself, still save the group to the instance (#16978)
(cherry picked from commit a4b00886718148dd021871ead5ac8a1e8a64285f)
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index b9cc49a6ef6..ee8a0b093e7 100644
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -15587,12 +15587,19 @@ void Unit::Kill(Unit* victim, bool durabilityLoss)
Player* creditedPlayer = GetCharmerOrOwnerPlayerOrPlayerItself();
/// @todo do instance binding anyway if the charmer/owner is offline
- if (instanceMap->IsDungeon() && creditedPlayer)
+ if (instanceMap->IsDungeon() && (creditedPlayer || this == victim))
{
if (instanceMap->IsRaidOrHeroicDungeon())
{
if (creature->GetCreatureTemplate()->flags_extra & CREATURE_FLAG_EXTRA_INSTANCE_BIND)
- ((InstanceMap*)instanceMap)->PermBindAllPlayers(creditedPlayer);
+ {
+ // if the boss killed itself we still need to bind players to the instance
+ if (!creditedPlayer && instanceMap->HavePlayers())
+ creditedPlayer = instanceMap->GetPlayers().getFirst()->GetSource();
+
+ if (creditedPlayer)
+ ((InstanceMap*)instanceMap)->PermBindAllPlayers(creditedPlayer);
+ }
}
else
{
@@ -15600,7 +15607,8 @@ void Unit::Kill(Unit* victim, bool durabilityLoss)
// until the players leave the instance
time_t resettime = creature->GetRespawnTimeEx() + 2 * HOUR;
if (InstanceSave* save = sInstanceSaveMgr->GetInstanceSave(creature->GetInstanceId()))
- if (save->GetResetTime() < resettime) save->SetResetTime(resettime);
+ if (save->GetResetTime() < resettime)
+ save->SetResetTime(resettime);
}
}
}