diff options
| author | Henry Gordon <henrytgordon@gmail.com> | 2016-04-16 06:02:47 -0400 |
|---|---|---|
| committer | DDuarte <dnpd.dd@gmail.com> | 2016-04-16 16:52:55 +0100 |
| commit | 1670d310b54323c9a3b2acefe81875c7b46aacff (patch) | |
| tree | 98205a9ed24f36ca0dde930dc6cc100d86ccc763 | |
| parent | fe90fdcba178d490c39299ae0339811744f30b8c (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.cpp | 14 |
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); } } } |
