fix(Scripts/ThousandNeedles): Improve the handling of quest 5151 (Hyp… (#17811)

This commit is contained in:
Andrew
2023-11-20 18:14:43 -03:00
committed by GitHub
parent 6289565bbf
commit 0fe18f7c6b
2 changed files with 32 additions and 43 deletions

View File

@@ -35,6 +35,7 @@ EndContentData */
#include "ScriptedCreature.h"
#include "ScriptedEscortAI.h"
#include "ScriptedGossip.h"
#include "SpellScript.h"
/*######
# npc_lakota_windsong
@@ -322,59 +323,34 @@ public:
enum PantherCage
{
ENRAGED_PANTHER = 10992
NPC_ENRAGED_PANTHER = 10992,
QUEST_HYPERCAPACITOR_GIZMO = 5151
};
class go_panther_cage : public GameObjectScript
class spell_panther_cage_key : public SpellScript
{
public:
go_panther_cage() : GameObjectScript("go_panther_cage") { }
PrepareSpellScript(spell_panther_cage_key);
bool OnGossipHello(Player* player, GameObject* go) override
void HandleDummy()
{
go->UseDoorOrButton();
if (player->GetQuestStatus(5151) == QUEST_STATUS_INCOMPLETE)
if (Player* player = GetCaster()->ToPlayer())
{
if (Creature* panther = go->FindNearestCreature(ENRAGED_PANTHER, 5, true))
if (player->GetQuestStatus(QUEST_HYPERCAPACITOR_GIZMO) == QUEST_STATUS_INCOMPLETE)
{
panther->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
panther->SetReactState(REACT_AGGRESSIVE);
panther->AI()->AttackStart(player);
if (Creature* panther = player->FindNearestCreature(NPC_ENRAGED_PANTHER, 5.0f, true))
{
panther->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
panther->SetReactState(REACT_AGGRESSIVE);
panther->AI()->AttackStart(GetCaster());
}
}
}
return true;
}
};
class npc_enraged_panther : public CreatureScript
{
public:
npc_enraged_panther() : CreatureScript("npc_enraged_panther") { }
CreatureAI* GetAI(Creature* creature) const override
{
return new npc_enraged_pantherAI(creature);
}
struct npc_enraged_pantherAI : public ScriptedAI
void Register() override
{
npc_enraged_pantherAI(Creature* creature) : ScriptedAI(creature) { }
void Reset() override
{
me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
me->SetReactState(REACT_PASSIVE);
}
void UpdateAI(uint32 /*diff*/) override
{
if (!UpdateVictim())
return;
DoMeleeAttackIfReady();
}
};
AfterCast += SpellCastFn(spell_panther_cage_key::HandleDummy);
}
};
void AddSC_thousand_needles()
@@ -382,6 +358,5 @@ void AddSC_thousand_needles()
new npc_lakota_windsong();
new npc_paoka_swiftmountain();
new npc_plucky();
new npc_enraged_panther();
new go_panther_cage();
RegisterSpellScript(spell_panther_cage_key);
}