aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Spells/SpellEffects.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/game/Spells/SpellEffects.cpp')
-rw-r--r--src/server/game/Spells/SpellEffects.cpp24
1 files changed, 14 insertions, 10 deletions
diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp
index af66302df7f..c213e78e01f 100644
--- a/src/server/game/Spells/SpellEffects.cpp
+++ b/src/server/game/Spells/SpellEffects.cpp
@@ -1547,6 +1547,7 @@ void Spell::SendLoot(ObjectGuid guid, LootType loottype)
return;
case GAMEOBJECT_TYPE_CHEST:
+ {
if (Battleground* bg = player->GetBattleground())
{
if (!bg->CanActivateGO(gameObjTarget->GetEntry(), bg->GetPlayerTeam(player->GetGUID())))
@@ -1556,6 +1557,7 @@ void Spell::SendLoot(ObjectGuid guid, LootType loottype)
}
}
+ Loot* loot = nullptr;
if (gameObjTarget->getLootState() == GO_READY)
{
if (uint32 lootId = gameObjTarget->GetGOInfo()->GetLootId())
@@ -1565,7 +1567,7 @@ void Spell::SendLoot(ObjectGuid guid, LootType loottype)
Group const* group = player->GetGroup();
bool groupRules = group && gameObjTarget->GetGOInfo()->chest.usegrouplootrules;
- Loot* loot = new Loot(gameObjTarget->GetMap(), guid, loottype, groupRules ? group : nullptr);
+ loot = new Loot(gameObjTarget->GetMap(), guid, loottype, groupRules ? group : nullptr);
gameObjTarget->m_loot.reset(loot);
loot->FillLoot(lootId, LootTemplates_Gameobject, player, !groupRules, false, gameObjTarget->GetLootMode(), gameObjTarget->GetMap()->GetDifficultyLootItemContext());
@@ -1588,16 +1590,18 @@ void Spell::SendLoot(ObjectGuid guid, LootType loottype)
gameObjTarget->SetLootState(GO_ACTIVATED, player);
}
+ else
+ loot = gameObjTarget->GetLootForPlayer(player);
- // Don't return, let loots been taken
+ // Send loot
+ if (loot)
+ player->SendLoot(*loot);
break;
+ }
default:
break;
}
}
-
- // Send loot
- player->SendLoot(guid, loottype);
}
void Spell::EffectOpenLock()
@@ -2281,7 +2285,7 @@ void Spell::EffectPickPocket()
return;
}
- player->SendLoot(unitTarget->GetGUID(), LOOT_PICKPOCKETING);
+ player->SendLoot(*creature->m_loot);
}
void Spell::EffectAddFarsight()
@@ -3481,7 +3485,7 @@ void Spell::EffectDisEnchant()
caster->UpdateCraftSkill(m_spellInfo);
itemTarget->m_loot.reset(new Loot(caster->GetMap(), itemTarget->GetGUID(), LOOT_DISENCHANTING, nullptr));
itemTarget->m_loot->FillLoot(ASSERT_NOTNULL(itemTarget->GetDisenchantLoot(caster))->ID, LootTemplates_Disenchant, caster, true);
- caster->SendLoot(itemTarget->GetGUID(), LOOT_DISENCHANTING);
+ caster->SendLoot(*itemTarget->m_loot);
}
// item will be removed at disenchanting end
@@ -3843,7 +3847,7 @@ void Spell::EffectSkinning()
creature->m_loot.reset(new Loot(creature->GetMap(), creature->GetGUID(), LOOT_SKINNING, nullptr));
creature->m_loot->FillLoot(creature->GetCreatureTemplate()->SkinLootId, LootTemplates_Skinning, player, true);
creature->SetLootRecipient(player, false);
- player->SendLoot(creature->GetGUID(), LOOT_SKINNING);
+ player->SendLoot(*creature->m_loot);
if (skill == SKILL_SKINNING)
{
@@ -4544,7 +4548,7 @@ void Spell::EffectProspecting()
itemTarget->m_loot.reset(new Loot(player->GetMap(), itemTarget->GetGUID(), LOOT_PROSPECTING, nullptr));
itemTarget->m_loot->FillLoot(itemTarget->GetEntry(), LootTemplates_Prospecting, player, true);
- player->SendLoot(itemTarget->GetGUID(), LOOT_PROSPECTING);
+ player->SendLoot(*itemTarget->m_loot);
}
void Spell::EffectMilling()
@@ -4571,7 +4575,7 @@ void Spell::EffectMilling()
itemTarget->m_loot.reset(new Loot(player->GetMap(), itemTarget->GetGUID(), LOOT_MILLING, nullptr));
itemTarget->m_loot->FillLoot(itemTarget->GetEntry(), LootTemplates_Milling, player, true);
- player->SendLoot(itemTarget->GetGUID(), LOOT_MILLING);
+ player->SendLoot(*itemTarget->m_loot);
}
void Spell::EffectSkill()