From 9a07a1ae18e920cc91e0fba18724ceed1b6d8a40 Mon Sep 17 00:00:00 2001 From: talamortis Date: Mon, 20 Nov 2017 19:58:43 +0000 Subject: [PATCH] When player skins a creature it will tell instance aswell. closes #614 --- src/game/Entities/Player/Player.cpp | 6 ++++++ src/game/Instances/InstanceScript.h | 3 +++ .../BlackrockSpire/blackrock_spire.h | 5 +++++ .../BlackrockSpire/instance_blackrock_spire.cpp | 13 +++++++++++++ 4 files changed, 27 insertions(+) diff --git a/src/game/Entities/Player/Player.cpp b/src/game/Entities/Player/Player.cpp index 88d23acf8..b9737c502 100644 --- a/src/game/Entities/Player/Player.cpp +++ b/src/game/Entities/Player/Player.cpp @@ -9269,6 +9269,12 @@ void Player::SendLoot(uint64 guid, LootType loot_type) loot->FillLoot(creature->GetCreatureTemplate()->SkinLootId, LootTemplates_Skinning, this, true); permission = OWNER_PERMISSION; + //Inform instance if creature is skinned. + if (InstanceScript* mapInstance = creature->GetInstanceScript()) + { + mapInstance->CreatureLooted(creature, LOOT_SKINNING); + } + // Xinef: Set new loot recipient creature->SetLootRecipient(this, false); } diff --git a/src/game/Instances/InstanceScript.h b/src/game/Instances/InstanceScript.h index 70c1b5c17..3d1958d60 100644 --- a/src/game/Instances/InstanceScript.h +++ b/src/game/Instances/InstanceScript.h @@ -134,6 +134,9 @@ class InstanceScript : public ZoneScript //On load virtual void Load(char const* data) { LoadBossState(data); } + //Called when creature is Looted + virtual void CreatureLooted(Creature* /*creature*/, LootType) {} + //When save is needed, this function generates the data virtual std::string GetSaveData() { return GetBossSaveData(); } diff --git a/src/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/blackrock_spire.h b/src/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/blackrock_spire.h index fd073b5a7..4073401b9 100644 --- a/src/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/blackrock_spire.h +++ b/src/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/blackrock_spire.h @@ -110,4 +110,9 @@ enum GameObjectsIds GO_UROK_PILE = 175621, }; +enum npcspells +{ + SPELL_FINKLE_IS_EINHORN = 16710 +}; + #endif diff --git a/src/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/instance_blackrock_spire.cpp b/src/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/instance_blackrock_spire.cpp index 751f58635..4a11391aa 100644 --- a/src/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/instance_blackrock_spire.cpp +++ b/src/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/instance_blackrock_spire.cpp @@ -67,6 +67,19 @@ public: memset(go_emberseerrunes, 0, sizeof(go_emberseerrunes)); } + void CreatureLooted(Creature* creature, LootType loot) override + { + switch (creature->GetEntry()) + { + case NPC_THE_BEAST: + if (loot == LOOT_SKINNING) + { + creature->CastSpell(creature, SPELL_FINKLE_IS_EINHORN, true); + } + break; + } + } + void OnCreatureCreate(Creature* creature) { switch (creature->GetEntry())