diff options
author | Nay <dnpd.dd@gmail.com> | 2012-09-23 07:48:40 -0700 |
---|---|---|
committer | Nay <dnpd.dd@gmail.com> | 2012-09-23 07:48:40 -0700 |
commit | e4d08c118656f4b2e12aac62975f4fc08b3f0b4a (patch) | |
tree | 7a3f6384cafa0f097b103c48a479e72673ea86f0 /src | |
parent | 6576d1a93c1ad8214f9b2f7c1cd82c3ab6ab3555 (diff) | |
parent | 9060294ab06f3005e0d8871776344b84de7f383b (diff) |
Merge pull request #7555 from Gacko/quest11648
Core: Quest - The art of persuasion
Diffstat (limited to 'src')
-rwxr-xr-x | src/server/game/Spells/SpellMgr.cpp | 4 | ||||
-rw-r--r-- | src/server/scripts/Northrend/borean_tundra.cpp | 113 |
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; + } } } }; |