diff options
| author | Gacko <gacko28@gmx.de> | 2012-08-28 21:37:13 +0200 | 
|---|---|---|
| committer | Gacko <gacko28@gmx.de> | 2012-08-30 20:27:21 +0200 | 
| commit | a303bda320d8fd0ca773184ffff319cf956ac159 (patch) | |
| tree | 913184d713809354fbc4f9d2196c8738d5874a9c /src | |
| parent | 902d48811ee476e735e5bc0ad61f9948888db82c (diff) | |
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 | 115 | 
2 files changed, 50 insertions, 69 deletions
diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp index e17e71f8869..83ef47abadc 100755 --- a/src/server/game/Spells/SpellMgr.cpp +++ b/src/server/game/Spells/SpellMgr.cpp @@ -2772,6 +2772,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..0096e2079a8 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,108 +1691,86 @@ 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; +                }              }          }      }; -    CreatureAI* GetAI(Creature* creature) const +    CreatureAI *GetAI(Creature* creature) const      {          return new npc_imprisoned_beryl_sorcererAI(creature);      }  | 
