Skip to content

Commit

Permalink
fix(Scripts/ShadowmoonValley): minor fixes to Enslaved Netherwing Dra…
Browse files Browse the repository at this point in the history
…kes (azerothcore#18883)

* init

* fixes
  • Loading branch information
elthehablo authored May 17, 2024
1 parent 6874d5e commit 3b4639a
Showing 1 changed file with 46 additions and 48 deletions.
94 changes: 46 additions & 48 deletions src/server/scripts/Outland/zone_shadowmoon_valley.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -439,9 +439,6 @@ enum EnshlavedNetherwingDrake
NPC_DRAGONMAW_WRANGLER = 21717,
NPC_ESCAPE_DUMMY = 22317,

EVENT_TAKE_OFF = 1,
EVENT_CREDIT_PLAYER = 2,

// Point
POINT_DESPAWN = 1
};
Expand All @@ -451,18 +448,14 @@ struct npc_enslaved_netherwing_drake : public ScriptedAI
public:
npc_enslaved_netherwing_drake(Creature* creature) : ScriptedAI(creature)
{
Tapped = false;
_tapped = false;
Reset();
}

ObjectGuid PlayerGUID;
bool Tapped;

Player* GetPlayer() { return ObjectAccessor::GetPlayer(*me, PlayerGUID); }

void Reset() override
{
if (!Tapped)
scheduler.CancelAll();
if (!_tapped)
{
me->RestoreFaction();
me->SetReactState(REACT_AGGRESSIVE);
Expand All @@ -474,9 +467,8 @@ struct npc_enslaved_netherwing_drake : public ScriptedAI

void JustDied(Unit* /*killer*/) override
{
Tapped = false;
_tapped = false;
me->RestoreFaction();
events.CancelEvent(EVENT_TAKE_OFF);
}

void SpellHit(Unit* caster, SpellInfo const* spell) override
Expand All @@ -485,20 +477,45 @@ struct npc_enslaved_netherwing_drake : public ScriptedAI
if (!playerCaster)
return;

if (spell->Id == SPELL_HIT_FORCE_OF_NELTHARAKU && !Tapped &&
if (spell->Id == SPELL_HIT_FORCE_OF_NELTHARAKU && !_tapped &&
playerCaster->GetQuestStatus(QUEST_THE_FORCE_OF_NELTHARAKU) == QUEST_STATUS_INCOMPLETE)
{
Tapped = true;
PlayerGUID = caster->GetGUID();
_tapped = true;
_playerGUID = caster->GetGUID();

me->SetFaction(FACTION_FLAYER_HUNTER); // Not sure if this is correct, it was taken off of Mordenai.
scheduler.Schedule(2s, [this](TaskContext)
{
me->SetFaction(FACTION_FLAYER_HUNTER); // Not sure if this is correct, it was taken off of Mordenai.

if (Unit* Dragonmaw = me->FindNearestCreature(NPC_DRAGONMAW_SUBJUGATOR, 25.0f))
AttackStart(Dragonmaw);
else if (Unit* Dragonmaw = me->FindNearestCreature(NPC_DRAGONMAW_WRANGLER, 25.0f))
AttackStart(Dragonmaw);
if (Unit* dragonmaw = me->FindNearestCreature(NPC_DRAGONMAW_SUBJUGATOR, 25.0f))
AttackStart(dragonmaw);
else if (Unit* dragonmaw = me->FindNearestCreature(NPC_DRAGONMAW_WRANGLER, 25.0f))
AttackStart(dragonmaw);
scheduler.Schedule(2s, [this](TaskContext)
{
_tapped = false;
Position pos;
if (Unit* escapeDummy = me->FindNearestCreature(NPC_ESCAPE_DUMMY, 30.0f))
pos = escapeDummy->GetPosition();
else
{
pos = me->GetRandomNearPosition(20.0f);
pos.m_positionZ += 25.0f;
}

events.ScheduleEvent(EVENT_TAKE_OFF, 2s);
me->SetDisableGravity(true);
me->GetMotionMaster()->MovePoint(POINT_DESPAWN, pos);
me->SetReactState(REACT_PASSIVE);
scheduler.Schedule(100ms, [this](TaskContext)
{
if (Player* player = _GetPlayer())
{
DoCast(player, SPELL_FORCE_OF_NELTHARAKU, true);
}
me->DespawnOrUnsummon(3s, 0s);
});
});
});
}
}

Expand All @@ -514,40 +531,21 @@ struct npc_enslaved_netherwing_drake : public ScriptedAI

void UpdateAI(uint32 diff) override
{
events.Update(diff);
scheduler.Update(diff);

if (!UpdateVictim())
{
switch (events.ExecuteEvent())
{
case EVENT_TAKE_OFF:
{
Tapped = false;
Position pos;
if (Unit* EscapeDummy = me->FindNearestCreature(NPC_ESCAPE_DUMMY, 30))
pos = EscapeDummy->GetPosition();
else
{
pos = me->GetRandomNearPosition(20);
pos.m_positionZ += 25;
}
return;

me->SetDisableGravity(true);
me->GetMotionMaster()->MovePoint(POINT_DESPAWN, pos);
me->SetReactState(REACT_PASSIVE);
events.ScheduleEvent(EVENT_CREDIT_PLAYER, 100ms);
break;
}
case EVENT_CREDIT_PLAYER:
DoCast(GetPlayer(), SPELL_FORCE_OF_NELTHARAKU, true);
me->DespawnOrUnsummon(3s, 0s);
break;
}
if (me->HasUnitState(UNIT_STATE_CASTING))
return;
}

DoMeleeAttackIfReady();
}
private:
bool _tapped;
ObjectGuid _playerGUID;

Player* _GetPlayer() { return ObjectAccessor::GetPlayer(*me, _playerGUID); }
};

/*#####
Expand Down

0 comments on commit 3b4639a

Please sign in to comment.