aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rwxr-xr-xsrc/server/game/Spells/SpellMgr.cpp4
-rw-r--r--src/server/scripts/Northrend/borean_tundra.cpp113
2 files changed, 49 insertions, 68 deletions
diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp
index 5107b488aad..c692a3d6991 100755
--- a/src/server/game/Spells/SpellMgr.cpp
+++ b/src/server/game/Spells/SpellMgr.cpp
@@ -2775,6 +2775,10 @@ void SpellMgr::LoadSpellCustomAttr()
switch (spellInfo->Id)
{
+ case 60256:
+ //Crashes client on pressing ESC (Maybe because of ReqSpellFocus and GameObject)
+ spellInfo->AttributesEx4 &= ~SPELL_ATTR4_TRIGGERED;
+ break;
case 1776: // Gouge
case 1777:
case 8629:
diff --git a/src/server/scripts/Northrend/borean_tundra.cpp b/src/server/scripts/Northrend/borean_tundra.cpp
index 9b207c257fc..f4139f2ffc2 100644
--- a/src/server/scripts/Northrend/borean_tundra.cpp
+++ b/src/server/scripts/Northrend/borean_tundra.cpp
@@ -1667,7 +1667,6 @@ public:
/*######
## npc_imprisoned_beryl_sorcerer
######*/
-
enum eImprisionedBerylSorcerer
{
SPELL_NEURAL_NEEDLE = 45634,
@@ -1692,103 +1691,81 @@ public:
{
npc_imprisoned_beryl_sorcererAI(Creature* creature) : ScriptedAI(creature) {}
- uint64 CasterGUID;
-
- uint32 uiStep;
- uint32 uiPhase;
+ uint32 rebuff;
void Reset()
{
- uiStep = 1;
- uiPhase = 0;
- CasterGUID = 0;
+ if (me->GetReactState() != REACT_PASSIVE)
+ {
+ me->SetReactState(REACT_PASSIVE);
+ }
+
+ rebuff = 0;
+ }
+
+ void UpdateAI(const uint32 diff)
+ {
+ UpdateVictim();
+
+ if (rebuff <= diff)
+ {
+ if (!me->HasAura(SPELL_COSMETIC_ENSLAVE_CHAINS_SELF))
+ {
+ DoCast(me, SPELL_COSMETIC_ENSLAVE_CHAINS_SELF);
+ }
+ rebuff = 180000;
+ }
+ else
+ rebuff -= diff;
+
+ DoMeleeAttackIfReady();
}
void EnterCombat(Unit* /*who*/)
{
}
- void SpellHit(Unit* unit, const SpellInfo* pSpell)
+ void SpellHit(Unit* unit, const SpellInfo* spell)
{
- if (pSpell->Id == SPELL_NEURAL_NEEDLE && unit->GetTypeId() == TYPEID_PLAYER)
+ if (spell->Id == SPELL_NEURAL_NEEDLE && unit->GetTypeId() == TYPEID_PLAYER)
{
- ++uiPhase;
- CasterGUID = unit->GetGUID();
+ if (Player* player = unit->ToPlayer())
+ {
+ GotStinged(player->GetGUID());
+ }
}
}
- void UpdateAI(const uint32 uiDiff)
+ void GotStinged(uint64 casterGUID)
{
- ScriptedAI::UpdateAI(uiDiff);
-
- if (!me->HasAura(SPELL_COSMETIC_ENSLAVE_CHAINS_SELF))
- DoCast(me, SPELL_COSMETIC_ENSLAVE_CHAINS_SELF);
-
- if (me->GetReactState() != REACT_PASSIVE)
- me->SetReactState(REACT_PASSIVE);
-
- switch (uiPhase)
+ if(Player* caster = Player::GetPlayer(*me, casterGUID))
{
+ uint32 step = caster->GetAuraCount(SPELL_NEURAL_NEEDLE) + 1;
+ switch (step)
+ {
case 1:
- if (uiStep == 1)
- {
- DoScriptText(SAY_IMPRISIONED_BERYL_1, me);
- uiStep = 2;
- }
+ DoScriptText(SAY_IMPRISIONED_BERYL_1, me);
break;
-
case 2:
- if (uiStep == 2)
- {
- DoScriptText(SAY_IMPRISIONED_BERYL_2, me);
- uiStep = 3;
- }
+ DoScriptText(SAY_IMPRISIONED_BERYL_2, me, caster);
break;
-
case 3:
- if (uiStep == 3)
- {
- DoScriptText(SAY_IMPRISIONED_BERYL_3, me);
- uiStep = 4;
- }
+ DoScriptText(SAY_IMPRISIONED_BERYL_3, me);
break;
-
case 4:
- if (uiStep == 4)
- {
- DoScriptText(SAY_IMPRISIONED_BERYL_4, me);
- uiStep = 5;
- }
+ DoScriptText(SAY_IMPRISIONED_BERYL_4, me);
break;
-
case 5:
- if (uiStep == 5)
- {
- if (Player* pCaster = Unit::GetPlayer(*me, CasterGUID))
- {
- DoScriptText(SAY_IMPRISIONED_BERYL_5, me);
- pCaster->KilledMonsterCredit(25478, 0);
- uiStep = 6;
- }
- }
+ DoScriptText(SAY_IMPRISIONED_BERYL_5, me);
break;
-
case 6:
- if (uiStep == 6)
- {
- DoScriptText(SAY_IMPRISIONED_BERYL_6, me);
- uiStep = 7;
- }
+ DoScriptText(SAY_IMPRISIONED_BERYL_6, me, caster);
break;
-
case 7:
- if (uiStep == 7)
- {
- DoScriptText(SAY_IMPRISIONED_BERYL_7, me);
- uiStep = 1;
- uiPhase = 0;
- }
+ DoScriptText(SAY_IMPRISIONED_BERYL_7, me);
+ caster->KilledMonsterCredit(25478, 0);
break;
+ }
}
}
};