Index: scripts/world/spell_scripts.cpp =================================================================== --- scripts/world/spell_scripts.cpp (revision 1683) +++ scripts/world/spell_scripts.cpp (working copy) @@ -28,6 +28,7 @@ spell 21014 spell 29528 spell 29866 +spell 45109 spell 46770 spell 46023 spell 47575 @@ -167,6 +168,17 @@ NPC_OWLKIN = 16518, NPC_OWLKIN_INOC = 16534, + // for quest 11541 + NPC_DARKSPINE_MYRMIDON = 25060, + NPC_DARKSPINE_SIREN = 25073, + NPC_GREENGILL_SLAVE = 25084, + NPC_FREED_GREENGILL_SLAVE = 25085, + + SPELL_ORB_OF_MURLOC_CONTROL = 45109, + SPELL_GREENGILL_SLAVE_FREED = 45110, + SPELL_ENRAGE = 45111, + SPELL_MIND_CONTROL = 45112, + // target for quest 12166) SPELL_LIQUID_FIRE = 46770, SPELL_LIQUID_FIRE_AURA = 47972, @@ -399,6 +411,41 @@ } return true; } + case SPELL_ORB_OF_MURLOC_CONTROL: + { + if (uiEffIndex == EFFECT_INDEX_0) + { + if (pCaster->GetTypeId() == TYPEID_PLAYER && pCreatureTarget->HasAura(SPELL_MIND_CONTROL)) + { + pCreatureTarget->CastSpell(pCaster, SPELL_GREENGILL_SLAVE_FREED, true); + pCreatureTarget->RemoveAurasDueToSpell(SPELL_MIND_CONTROL); + pCreatureTarget->UpdateEntry(NPC_FREED_GREENGILL_SLAVE); + std::list targets; + MaNGOS::AnyUnitInObjectRangeCheck u_check(pCaster, 20.0f); + MaNGOS::UnitListSearcher searcher(pCaster, targets, u_check); + Cell::VisitAllObjects(pCaster, searcher, 20.0f); + bool isFind = false; + for(std::list::iterator tIter = targets.begin(); tIter != targets.end(); tIter++) + { + switch ((*tIter)->GetEntry()) + { + case NPC_DARKSPINE_MYRMIDON: + case NPC_DARKSPINE_SIREN: + { + if (!isFind){ + pCreatureTarget->CastSpell(pCreatureTarget, SPELL_ENRAGE, true); + pCreatureTarget->AI()->AttackStart((*tIter)); + isFind = true; + } + break; + } + } + } + } + return true; + } + return true; + } case SPELL_LIQUID_FIRE: { if (uiEffIndex == EFFECT_INDEX_0)