diff --git a/data/sql/updates/pending_db_world/rev_1719691851180437100.sql b/data/sql/updates/pending_db_world/rev_1719691851180437100.sql new file mode 100644 index 000000000..b30a4e119 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1719691851180437100.sql @@ -0,0 +1,10 @@ +-- Shattrath Daily Normal/Heroic holograms +UPDATE `creature_template` SET `ScriptName` = 'npc_shattrath_daily_quest' WHERE `entry` IN (24410,24854); + +UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 24369; +DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 24369); +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 +(24369, 0, 0, 1, 1, 0, 100, 1, 0, 0, 0, 0, 0, 0, 223, 1, 0, 0, 0, 0, 0, 10, 79464, 24854, 0, 0, 0, 0, 0, 0, 'Wind Trader Zhareem - Out of Combat - Do Action ID 1 (No Repeat)'), +(24369, 0, 1, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 223, 1, 0, 0, 0, 0, 0, 10, 79462, 24410, 0, 0, 0, 0, 0, 0, 'Wind Trader Zhareem - Out of Combat - Do Action ID 1 (No Repeat)'), +(24369, 0, 2, 3, 101, 0, 100, 0, 1, 30, 60000, 60000, 60000, 0, 223, 1, 0, 0, 0, 0, 0, 10, 79464, 24854, 0, 0, 0, 0, 0, 0, 'Wind Trader Zhareem - On 1 or More Players in Range - Do Action ID 1'), +(24369, 0, 3, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 0, 223, 1, 0, 0, 0, 0, 0, 10, 79462, 24410, 0, 0, 0, 0, 0, 0, 'Wind Trader Zhareem - On 1 or More Players in Range - Do Action ID 1'); diff --git a/src/server/scripts/Outland/zone_shattrath_city.cpp b/src/server/scripts/Outland/zone_shattrath_city.cpp index 34ca2c9e0..bccd14d26 100644 --- a/src/server/scripts/Outland/zone_shattrath_city.cpp +++ b/src/server/scripts/Outland/zone_shattrath_city.cpp @@ -16,6 +16,7 @@ */ #include "CreatureScript.h" +#include "PassiveAI.h" #include "Player.h" #include "ScriptedCreature.h" #include "ScriptedEscortAI.h" @@ -253,9 +254,166 @@ public: }; }; +enum ShattrathQuests +{ + // QuestID : Creature Template ID + // Heroic Daily Quests + QUEST_H_NAZZAN = 11354, // 24410 + QUEST_H_KELIDAN = 11362, // 24413 + QUEST_H_BLADEFIST = 11363, // 24414 + QUEST_H_QUAG = 11368, // 24419 + QUEST_H_BLACKSTALKER = 11369, // 24420 + QUEST_H_WARLORD = 11370, // 24421 + QUEST_H_IKISS = 11372, // 24422 + QUEST_H_SHAFFAR = 11373, // 24423 + QUEST_H_EXARCH = 11374, // 24424 + QUEST_H_MURMUR = 11375, // 24425 + QUEST_H_EPOCH = 11378, // 24427 + QUEST_H_AEONUS = 11382, // 24428 + QUEST_H_WARP = 11384, // 24431 + QUEST_H_CALCULATOR = 11386, // 21504 + QUEST_H_SKYRISS = 11388, // 24435 + QUEST_H_KAEL = 11499, // 24855 + // Normal Daily Quests + QUEST_N_CENTURIONS = 11364, // 24411 + QUEST_N_MYRMIDONS = 11371, // 24415 + QUEST_N_INSTRUCTORS = 11376, // 24426 + QUEST_N_LORDS = 11383, // 24429 + QUEST_N_CHANNELERS = 11385, // 24430 + QUEST_N_DESTROYERS = 11387, // 24432 + QUEST_N_SENTINELS = 11389, // 24434 + QUEST_N_SISTERS = 11500, // 24854 + + ACTION_UPDATE_QUEST_STATUS = 1, + + POOL_SHATTRATH_DAILY_H = 356, + POOL_SHATTRATH_DAILY_N = 357, + + // Image NPCs + NPC_SHATTRATH_DAILY_H = 24854, + NPC_SHATTRATH_DAILY_N = 24410 +}; + +struct npc_shattrath_daily_quest : public NullCreatureAI +{ + npc_shattrath_daily_quest(Creature* c) : NullCreatureAI(c) {} + + void DoAction(int32 action) override + { + if (action == ACTION_UPDATE_QUEST_STATUS) + { + uint32 creature = me->GetEntry(); + QueryResult result = CharacterDatabase.Query("SELECT `quest_id` FROM `pool_quest_save` WHERE `pool_id` = '{}'", creature == NPC_SHATTRATH_DAILY_H ? POOL_SHATTRATH_DAILY_H : POOL_SHATTRATH_DAILY_N); + if (result) + { + Field *fields = result->Fetch(); + int quest_id = fields[0].Get(); + uint32 templateID; + + if (creature == NPC_SHATTRATH_DAILY_H) + { + switch (quest_id) + { + case QUEST_H_NAZZAN: + templateID = 24410; + break; + case QUEST_H_KELIDAN: + templateID = 24413; + break; + case QUEST_H_BLADEFIST: + templateID = 24414; + break; + case QUEST_H_QUAG: + templateID = 24419; + break; + case QUEST_H_BLACKSTALKER: + templateID = 24420; + break; + case QUEST_H_WARLORD: + templateID = 24421; + break; + case QUEST_H_IKISS: + templateID = 24422; + break; + case QUEST_H_SHAFFAR: + templateID = 24423; + break; + case QUEST_H_EXARCH: + templateID = 24424; + break; + case QUEST_H_MURMUR: + templateID = 24425; + break; + case QUEST_H_EPOCH: + templateID = 24427; + break; + case QUEST_H_AEONUS: + templateID = 24428; + break; + case QUEST_H_WARP: + templateID = 24431; + break; + case QUEST_H_CALCULATOR: + templateID = 21504; + break; + case QUEST_H_SKYRISS: + templateID = 24435; + break; + case QUEST_H_KAEL: + templateID = 24855; + break; + default: + break; + } + } + + if (creature == NPC_SHATTRATH_DAILY_N) + { + switch (quest_id) + { + case QUEST_N_CENTURIONS: + templateID = 24411; + break; + case QUEST_N_MYRMIDONS: + templateID = 24415; + break; + case QUEST_N_INSTRUCTORS: + templateID = 24426; + break; + case QUEST_N_LORDS: + templateID = 24429; + break; + case QUEST_N_CHANNELERS: + templateID = 24430; + break; + case QUEST_N_DESTROYERS: + templateID = 24432; + break; + case QUEST_N_SENTINELS: + templateID = 24434; + break; + case QUEST_N_SISTERS: + templateID = 24854; + break; + default: + break; + } + } + + if (CreatureTemplate const* ci = sObjectMgr->GetCreatureTemplate(templateID)) + { + CreatureModel const* model = ObjectMgr::ChooseDisplayId(ci); + me->SetDisplayId(model->CreatureDisplayID, model->DisplayScale); + } + } + } + } +}; + void AddSC_shattrath_city() { new npc_shattrathflaskvendors(); new npc_zephyr(); new npc_kservant(); + RegisterCreatureAI(npc_shattrath_daily_quest); }