aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/scripts/Northrend/zone_borean_tundra.cpp70
1 files changed, 26 insertions, 44 deletions
diff --git a/src/server/scripts/Northrend/zone_borean_tundra.cpp b/src/server/scripts/Northrend/zone_borean_tundra.cpp
index 1a2d58ccbf4..2c74c4ffab3 100644
--- a/src/server/scripts/Northrend/zone_borean_tundra.cpp
+++ b/src/server/scripts/Northrend/zone_borean_tundra.cpp
@@ -1528,17 +1528,14 @@ public:
######*/
enum ImprisionedBerylSorcerer
{
- SPELL_NEURAL_NEEDLE = 45634,
+ SPELL_NEURAL_NEEDLE = 45634,
+ SPELL_PROTOTYPE_NEURAL_NEEDLE = 48252,
+ SPELL_NEURAL_NEEDLE_IMPACT = 45702,
+ SPELL_PROTOTYPE_NEURAL_NEEDLE_IMPACT = 48254,
- NPC_IMPRISONED_BERYL_SORCERER = 25478,
+ NPC_IMPRISONED_BERYL_SORCERER = 25478,
- SAY_IMPRISIONED_BERYL_1 = 0,
- SAY_IMPRISIONED_BERYL_2 = 1,
- SAY_IMPRISIONED_BERYL_3 = 2,
- SAY_IMPRISIONED_BERYL_4 = 3,
- SAY_IMPRISIONED_BERYL_5 = 4,
- SAY_IMPRISIONED_BERYL_6 = 5,
- SAY_IMPRISIONED_BERYL_7 = 6
+ QUEST_THE_ART_OF_PERSUASION = 11648
};
class npc_imprisoned_beryl_sorcerer : public CreatureScript
@@ -1575,9 +1572,7 @@ public:
if (rebuff <= diff)
{
if (!me->HasAura(SPELL_COSMETIC_ENSLAVE_CHAINS_SELF))
- {
DoCast(me, SPELL_COSMETIC_ENSLAVE_CHAINS_SELF);
- }
rebuff = 180000;
}
else
@@ -1592,42 +1587,29 @@ public:
void SpellHit(Unit* unit, SpellInfo const* spell) override
{
- if (spell->Id == SPELL_NEURAL_NEEDLE && unit->GetTypeId() == TYPEID_PLAYER)
- if (Player* player = unit->ToPlayer())
- GotStinged(player->GetGUID());
+ if ((spell->Id == SPELL_NEURAL_NEEDLE || spell->Id == SPELL_PROTOTYPE_NEURAL_NEEDLE) && unit->GetTypeId() == TYPEID_PLAYER)
+ GotStinged(unit->ToPlayer(), spell->Id);
}
- void GotStinged(ObjectGuid casterGUID)
+ void GotStinged(Player* caster, uint32 spellId)
{
- if (Player* caster = ObjectAccessor::GetPlayer(*me, casterGUID))
- {
- uint32 step = caster->GetAuraCount(SPELL_NEURAL_NEEDLE) + 1;
- switch (step)
- {
- case 1:
- Talk(SAY_IMPRISIONED_BERYL_1);
- break;
- case 2:
- Talk(SAY_IMPRISIONED_BERYL_2, caster);
- break;
- case 3:
- Talk(SAY_IMPRISIONED_BERYL_3);
- break;
- case 4:
- Talk(SAY_IMPRISIONED_BERYL_4);
- break;
- case 5:
- Talk(SAY_IMPRISIONED_BERYL_5);
- caster->KilledMonsterCredit(NPC_IMPRISONED_BERYL_SORCERER);
- break;
- case 6:
- Talk(SAY_IMPRISIONED_BERYL_6, caster);
- break;
- case 7:
- Talk(SAY_IMPRISIONED_BERYL_7);
- break;
- }
- }
+ DoCastSelf(spellId == SPELL_NEURAL_NEEDLE ? SPELL_NEURAL_NEEDLE_IMPACT : SPELL_PROTOTYPE_NEURAL_NEEDLE_IMPACT);
+
+ // Event cannot happen if quest is not accepted/completed/rewarded
+ if (caster->GetQuestStatus(QUEST_THE_ART_OF_PERSUASION) == QUEST_STATUS_NONE)
+ return;
+
+ uint32 step = 0;
+
+ if (spellId == SPELL_NEURAL_NEEDLE)
+ step = caster->GetAuraCount(SPELL_NEURAL_NEEDLE); // Text IDs 0-6
+ else
+ step = caster->GetAuraCount(SPELL_PROTOTYPE_NEURAL_NEEDLE) + 7; // Text IDs 7-18
+
+ if (spellId == SPELL_NEURAL_NEEDLE && step == 4)
+ caster->KilledMonsterCredit(NPC_IMPRISONED_BERYL_SORCERER);
+
+ Talk(step, caster);
}
};