aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorKittnz <frederik156@hotmail.com>2016-11-29 21:44:23 +0100
committerKittnz <frederik156@hotmail.com>2016-11-29 21:44:23 +0100
commit1553cc02fb2bce477b4ce9b2e93a68b97aa20b29 (patch)
treeb6c6fa1525db77de35f11a8701603d5365040210 /src
parent0f649d51e94794bbd3b54d9e83a2cc1fa09f4bbe (diff)
Core/Scripts: Drake Hunt
- Removed creature script - Using a spell script for red dragonblood spell http://wotlk.openwow.com/spell=46620 from sunwell - Updated the SAI scripts for the quest Drake Hunt also from sunwell and fixed by Kilyana
Diffstat (limited to 'src')
-rw-r--r--src/server/scripts/Northrend/zone_borean_tundra.cpp124
1 files changed, 25 insertions, 99 deletions
diff --git a/src/server/scripts/Northrend/zone_borean_tundra.cpp b/src/server/scripts/Northrend/zone_borean_tundra.cpp
index ed7872dea4a..2a29c2af594 100644
--- a/src/server/scripts/Northrend/zone_borean_tundra.cpp
+++ b/src/server/scripts/Northrend/zone_borean_tundra.cpp
@@ -31,7 +31,6 @@ npc_khunok_the_behemoth
npc_nerubar_victim
npc_nesingwary_trapper
npc_lurgglbr
-npc_nexus_drake_hatchling
EndContentData */
#include "ScriptMgr.h"
@@ -681,121 +680,48 @@ public:
}
};
-/*######
-## npc_nexus_drake_hatchling
-######*/
-
-enum NexusDrakeHatchling
+enum red_dragonblood
{
- SPELL_DRAKE_HARPOON = 46607,
- SPELL_RED_DRAGONBLOOD = 46620,
- SPELL_DRAKE_HATCHLING_SUBDUED = 46691,
- SPELL_SUBDUED = 46675,
-
- NPC_RAELORASZ = 26117,
-
- QUEST_DRAKE_HUNT = 11919,
- QUEST_DRAKE_HUNT_D = 11940
+ SPELL_DRAKE_HATCHLING_SUBDUED = 46691,
+ SPELL_SUBDUED = 46675
};
-class npc_nexus_drake_hatchling : public CreatureScript
+class spell_red_dragonblood : public SpellScriptLoader
{
public:
- npc_nexus_drake_hatchling() : CreatureScript("npc_nexus_drake_hatchling") { }
+ spell_red_dragonblood() : SpellScriptLoader("spell_red_dragonblood") { }
- struct npc_nexus_drake_hatchlingAI : public FollowerAI //The spell who makes the npc follow the player is missing, also we can use FollowerAI!
+ class spell_red_dragonblood_AuraScript : public AuraScript
{
- npc_nexus_drake_hatchlingAI(Creature* creature) : FollowerAI(creature)
- {
- Initialize();
- }
+ PrepareAuraScript(spell_red_dragonblood_AuraScript);
- void Initialize()
+ void HandleEffectRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
{
- WithRedDragonBlood = false;
- }
-
- ObjectGuid HarpoonerGUID;
- bool WithRedDragonBlood;
-
- void Reset() override
- {
- Initialize();
- }
-
- void EnterCombat(Unit* who) override
- {
- if (me->IsValidAttackTarget(who))
- AttackStart(who);
- }
-
- void SpellHit(Unit* caster, const SpellInfo* spell) override
- {
- if (spell->Id == SPELL_DRAKE_HARPOON && caster->GetTypeId() == TYPEID_PLAYER)
- {
- HarpoonerGUID = caster->GetGUID();
- DoCast(me, SPELL_RED_DRAGONBLOOD, true);
- }
- WithRedDragonBlood = true;
- }
-
- void MoveInLineOfSight(Unit* who) override
-
- {
- FollowerAI::MoveInLineOfSight(who);
-
- if (!HarpoonerGUID)
+ if (GetTargetApplication()->GetRemoveMode() != AURA_REMOVE_BY_EXPIRE || !GetCaster())
return;
- if (me->HasAura(SPELL_SUBDUED) && who->GetEntry() == NPC_RAELORASZ)
- {
- if (me->IsWithinDistInMap(who, INTERACTION_DISTANCE))
- {
- if (Player* pHarpooner = ObjectAccessor::GetPlayer(*me, HarpoonerGUID))
- {
- pHarpooner->KilledMonsterCredit(26175);
- pHarpooner->RemoveAura(SPELL_DRAKE_HATCHLING_SUBDUED);
- SetFollowComplete();
- HarpoonerGUID.Clear();
- me->DisappearAndDie();
- }
- }
- }
+ Creature* owner = GetOwner()->ToCreature();
+ owner->RemoveAllAurasExceptType(SPELL_AURA_DUMMY);
+ owner->CombatStop(true);
+ owner->DeleteThreatList();
+ owner->GetMotionMaster()->Clear(false);
+ owner->GetMotionMaster()->MoveFollow(GetCaster(), 4.0f, 0.0f);
+ owner->CastSpell(owner, SPELL_SUBDUED, true);
+ GetCaster()->CastSpell(GetCaster(), SPELL_DRAKE_HATCHLING_SUBDUED, true);
+ owner->setFaction(35);
+ owner->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
+ owner->DespawnOrUnsummon(3 * MINUTE*IN_MILLISECONDS);
}
- void UpdateAI(uint32 /*diff*/) override
+ void Register()
{
- if (WithRedDragonBlood && HarpoonerGUID && !me->HasAura(SPELL_RED_DRAGONBLOOD))
- {
- if (Player* pHarpooner = ObjectAccessor::GetPlayer(*me, HarpoonerGUID))
- {
- EnterEvadeMode();
- StartFollow(pHarpooner, 35, NULL);
-
- DoCast(me, SPELL_SUBDUED, true);
- pHarpooner->CastSpell(pHarpooner, SPELL_DRAKE_HATCHLING_SUBDUED, true);
-
- me->AttackStop();
- WithRedDragonBlood = false;
- }
- }
-
- if ((me->getFaction() == 35) && (!me->HasAura(SPELL_SUBDUED)))
- {
- HarpoonerGUID.Clear();
- me->DisappearAndDie();
- }
-
- if (!UpdateVictim())
- return;
-
- DoMeleeAttackIfReady();
+ AfterEffectRemove += AuraEffectRemoveFn(spell_red_dragonblood_AuraScript::HandleEffectRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
}
};
- CreatureAI* GetAI(Creature* creature) const override
+ AuraScript* GetAuraScript() const
{
- return new npc_nexus_drake_hatchlingAI(creature);
+ return new spell_red_dragonblood_AuraScript();
}
};
@@ -2456,7 +2382,7 @@ void AddSC_borean_tundra()
new npc_nerubar_victim();
new npc_nesingwary_trapper();
new npc_lurgglbr();
- new npc_nexus_drake_hatchling();
+ new spell_red_dragonblood();
new npc_thassarian();
new npc_image_lich_king();
new npc_counselor_talbot();