diff --git a/zone/attack.cpp b/zone/attack.cpp index 31410aa0f..b78d7786b 100644 --- a/zone/attack.cpp +++ b/zone/attack.cpp @@ -2790,7 +2790,10 @@ bool NPC::Death(Mob* killer_mob, int64 damage, uint16 spell, EQ::skills::SkillTy } if (oos->IsNPC()) { - parse->EventNPC(EVENT_NPC_SLAY, oos->CastToNPC(), this, "", 0); + if (parse->HasQuestSub(oos->GetNPCTypeID(), EVENT_NPC_SLAY)) { + parse->EventNPC(EVENT_NPC_SLAY, oos->CastToNPC(), this, "", 0); + } + auto emote_id = oos->GetEmoteID(); if (emote_id) { oos->CastToNPC()->DoNPCEmote(EQ::constants::EmoteEventTypes::KilledNPC, emote_id); @@ -2801,7 +2804,10 @@ bool NPC::Death(Mob* killer_mob, int64 damage, uint16 spell, EQ::skills::SkillTy } if (killer_mob && killer_mob->IsBot()) { - parse->EventBot(EVENT_NPC_SLAY, killer_mob->CastToBot(), this, "", 0); + if (parse->BotHasQuestSub(EVENT_NPC_SLAY)) { + parse->EventBot(EVENT_NPC_SLAY, killer_mob->CastToBot(), this, "", 0); + } + killer_mob->TrySpellOnKill(killed_level, spell); } diff --git a/zone/embparser.cpp b/zone/embparser.cpp index 6585660ee..fa079a183 100644 --- a/zone/embparser.cpp +++ b/zone/embparser.cpp @@ -1591,6 +1591,7 @@ void PerlembParser::ExportEventVariables( case EVENT_NPC_SLAY: { ExportVar(package_name.c_str(), "killed", mob->GetNPCTypeID()); + ExportVar(package_name.c_str(), "killed_npc", "NPC", mob->CastToNPC()); break; }