mirror of
https://github.com/liyunfan1223/azerothcore-wotlk.git
synced 2026-08-09 08:17:56 +00:00
fix(Scripts/ThousandNeedles): Improve the handling of quest 5151 (Hyp… (#17811)
This commit is contained in:
@@ -0,0 +1,14 @@
|
|||||||
|
--
|
||||||
|
UPDATE `creature_template` SET `ScriptName` = '', `AIName` = 'SmartAI' WHERE `entry` = 10992;
|
||||||
|
|
||||||
|
DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 10992);
|
||||||
|
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `event_param6`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
|
||||||
|
(10992, 0, 0, 1, 25, 0, 100, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Enraged Panther - On Reset - Set Reactstate Passive'),
|
||||||
|
(10992, 0, 1, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 18, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Enraged Panther - On Reset - Set Flags Not Attackable');
|
||||||
|
|
||||||
|
UPDATE `gameobject_template` SET `ScriptName` = '' WHERE `entry` = 176195;
|
||||||
|
|
||||||
|
DELETE FROM `spell_script_names` WHERE `spell_id` = 17176;
|
||||||
|
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
|
||||||
|
(17176, 'spell_panther_cage_key');
|
||||||
|
|
||||||
@@ -35,6 +35,7 @@ EndContentData */
|
|||||||
#include "ScriptedCreature.h"
|
#include "ScriptedCreature.h"
|
||||||
#include "ScriptedEscortAI.h"
|
#include "ScriptedEscortAI.h"
|
||||||
#include "ScriptedGossip.h"
|
#include "ScriptedGossip.h"
|
||||||
|
#include "SpellScript.h"
|
||||||
|
|
||||||
/*######
|
/*######
|
||||||
# npc_lakota_windsong
|
# npc_lakota_windsong
|
||||||
@@ -322,59 +323,34 @@ public:
|
|||||||
|
|
||||||
enum PantherCage
|
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:
|
PrepareSpellScript(spell_panther_cage_key);
|
||||||
go_panther_cage() : GameObjectScript("go_panther_cage") { }
|
|
||||||
|
|
||||||
bool OnGossipHello(Player* player, GameObject* go) override
|
void HandleDummy()
|
||||||
{
|
{
|
||||||
go->UseDoorOrButton();
|
if (Player* player = GetCaster()->ToPlayer())
|
||||||
if (player->GetQuestStatus(5151) == QUEST_STATUS_INCOMPLETE)
|
|
||||||
{
|
{
|
||||||
if (Creature* panther = go->FindNearestCreature(ENRAGED_PANTHER, 5, true))
|
if (player->GetQuestStatus(QUEST_HYPERCAPACITOR_GIZMO) == QUEST_STATUS_INCOMPLETE)
|
||||||
{
|
{
|
||||||
panther->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
if (Creature* panther = player->FindNearestCreature(NPC_ENRAGED_PANTHER, 5.0f, true))
|
||||||
panther->SetReactState(REACT_AGGRESSIVE);
|
{
|
||||||
panther->AI()->AttackStart(player);
|
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) { }
|
AfterCast += SpellCastFn(spell_panther_cage_key::HandleDummy);
|
||||||
|
}
|
||||||
void Reset() override
|
|
||||||
{
|
|
||||||
me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
|
||||||
me->SetReactState(REACT_PASSIVE);
|
|
||||||
}
|
|
||||||
|
|
||||||
void UpdateAI(uint32 /*diff*/) override
|
|
||||||
{
|
|
||||||
if (!UpdateVictim())
|
|
||||||
return;
|
|
||||||
|
|
||||||
DoMeleeAttackIfReady();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
void AddSC_thousand_needles()
|
void AddSC_thousand_needles()
|
||||||
@@ -382,6 +358,5 @@ void AddSC_thousand_needles()
|
|||||||
new npc_lakota_windsong();
|
new npc_lakota_windsong();
|
||||||
new npc_paoka_swiftmountain();
|
new npc_paoka_swiftmountain();
|
||||||
new npc_plucky();
|
new npc_plucky();
|
||||||
new npc_enraged_panther();
|
RegisterSpellScript(spell_panther_cage_key);
|
||||||
new go_panther_cage();
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user