diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Entities/Player/KillRewarder.cpp | 13 | ||||
-rw-r--r-- | src/server/game/Entities/Unit/Unit.cpp | 8 |
2 files changed, 12 insertions, 9 deletions
diff --git a/src/server/game/Entities/Player/KillRewarder.cpp b/src/server/game/Entities/Player/KillRewarder.cpp index 5f352fba290..921bf521a92 100644 --- a/src/server/game/Entities/Player/KillRewarder.cpp +++ b/src/server/game/Entities/Player/KillRewarder.cpp @@ -296,11 +296,14 @@ void KillRewarder::Reward() if (InstanceScript* instance = _victim->GetInstanceScript()) instance->UpdateEncounterStateForKilledCreature(_victim->GetEntry(), _victim); - if (ObjectGuid::LowType guildId = victim->GetMap()->GetOwnerGuildId()) - if (Guild* guild = sGuildMgr->GetGuildById(guildId)) - guild->UpdateCriteria(CriteriaType::KillCreature, victim->GetEntry(), 1, 0, victim, *_killers.begin()); + if (_killers.begin() != _killers.end()) + { + if (ObjectGuid::LowType guildId = victim->GetMap()->GetOwnerGuildId()) + if (Guild* guild = sGuildMgr->GetGuildById(guildId)) + guild->UpdateCriteria(CriteriaType::KillCreature, victim->GetEntry(), 1, 0, victim, *_killers.begin()); - if (Scenario* scenario = victim->GetScenario()) - scenario->UpdateCriteria(CriteriaType::KillCreature, victim->GetEntry(), 1, 0, victim, *_killers.begin()); + if (Scenario* scenario = victim->GetScenario()) + scenario->UpdateCriteria(CriteriaType::KillCreature, victim->GetEntry(), 1, 0, victim, *_killers.begin()); + } } } diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 564df7d5519..0f6cd37659a 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -10644,17 +10644,17 @@ void Unit::SetMeleeAnimKitId(uint16 animKitId) if (creature->GetMap()->IsDungeon()) { - Group* group = !groups.empty() ? *groups.begin() : nullptr; - Player* looter = group ? ASSERT_NOTNULL(ObjectAccessor::GetPlayer(*creature, group->GetLooterGuid())) : tappers[0]; - if (dungeonEncounter) { creature->m_personalLoot = GenerateDungeonEncounterPersonalLoot(dungeonEncounter->ID, creature->GetCreatureTemplate()->lootid, LootTemplates_Creature, LOOT_CORPSE, creature, creature->GetCreatureTemplate()->mingold, creature->GetCreatureTemplate()->maxgold, creature->GetLootMode(), creature->GetMap()->GetDifficultyLootItemContext(), tappers); } - else + else if (!tappers.empty()) { + Group* group = !groups.empty() ? *groups.begin() : nullptr; + Player* looter = group ? ASSERT_NOTNULL(ObjectAccessor::GetPlayer(*creature, group->GetLooterGuid())) : tappers[0]; + Loot* loot = new Loot(creature->GetMap(), creature->GetGUID(), LOOT_CORPSE, dungeonEncounter ? group : nullptr); if (uint32 lootid = creature->GetCreatureTemplate()->lootid) |