diff --git a/data/sql/updates/pending_db_world/rev_1700510942686505500.sql b/data/sql/updates/pending_db_world/rev_1700510942686505500.sql new file mode 100644 index 000000000..8a27c2926 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1700510942686505500.sql @@ -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'); + diff --git a/src/server/scripts/Kalimdor/zone_thousand_needles.cpp b/src/server/scripts/Kalimdor/zone_thousand_needles.cpp index 1dff96f93..06cf84fa1 100644 --- a/src/server/scripts/Kalimdor/zone_thousand_needles.cpp +++ b/src/server/scripts/Kalimdor/zone_thousand_needles.cpp @@ -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); }