From 138e5309e6fff172e56a08a8af844c2c1975eca4 Mon Sep 17 00:00:00 2001 From: Emo Norfik Date: Sat, 7 Jan 2012 21:18:27 +0100 Subject: [PATCH 1/3] Scripts/Halls of Lightning: Implement "Lightning Struck" achievement. --- .../01_boss_general_bjarngrim.sql | 30 +++++++++++ .../HallsOfLightning/boss_bjarngrim.cpp | 54 ++++++++++++++++++- 2 files changed, 82 insertions(+), 2 deletions(-) create mode 100644 sql/custom/Ulduar/HallsOfLightning/01_boss_general_bjarngrim.sql diff --git a/sql/custom/Ulduar/HallsOfLightning/01_boss_general_bjarngrim.sql b/sql/custom/Ulduar/HallsOfLightning/01_boss_general_bjarngrim.sql new file mode 100644 index 00000000000..b4a77999612 --- /dev/null +++ b/sql/custom/Ulduar/HallsOfLightning/01_boss_general_bjarngrim.sql @@ -0,0 +1,30 @@ +-- HoL General Bjarngrim event Temporary Electrical Charge +-- Clear wrong aura +UPDATE `creature_addon` SET `auras`='' WHERE `guid` = 126981; + +-- add spell link for Temporary Electrical Charge +DELETE FROM `spell_linked_spell` WHERE `spell_trigger`='-52098' AND `spell_effect`='52092'; +INSERT INTO `spell_linked_spell` (`spell_trigger`, `spell_effect`, `type`, `comment`) VALUES +('-52098', '52092', '0', 'Charge Up - Temporary Electrical Charge'); + +-- Set 10 sec delay on platforms where boss gets Temporary Electrical Charge +UPDATE `waypoint_data` SET `delay`=10000 WHERE `id`=1269810 AND `point` IN (2, 5, 11, 14); + +-- Cast self Charge Up to get Temporary Electrical Charge +DELETE FROM `waypoint_scripts` WHERE `id`=12698101; +INSERT INTO `waypoint_scripts` (`id`, `delay`, `command`, `datalong`, `datalong2`, `dataint`, `x`, `y`, `z`, `o`, `guid`) VALUES +(12698101, 0, 14, 52092, 1, 0, 0, 0, 0, 0, 855), +(12698101, 2, 15, 52098, 1, 0, 0, 0, 0, 0, 856); +UPDATE `waypoint_data` SET `action`=12698101 WHERE `id`=1269810 AND `point` IN (5, 14); + +-- Remove aura Temporary Electrical Charge +DELETE FROM `waypoint_scripts` WHERE `id`=12698102; +INSERT INTO `waypoint_scripts` (`id`, `delay`, `command`, `datalong`, `datalong2`, `dataint`, `x`, `y`, `z`, `o`, `guid`) VALUES +(12698102, 0, 14, 52092, 1, 0, 0, 0, 0, 0, 857); +UPDATE `waypoint_data` SET `action`=12698102 WHERE `id`=1269810 AND `point` IN (2, 3, 4, 11, 12, 13); + +-- Lightning Struck achievement +DELETE FROM `disables` WHERE `sourceType`=4 AND `entry`=6835; +DELETE FROM `achievement_criteria_data` WHERE `type`=11 AND `criteria_id`=6835; +INSERT INTO `achievement_criteria_data` (`criteria_id`, `type`, `value1`, `value2`, `ScriptName`) VALUES +(6835, 11, 0, 0, 'achievement_lightning_struck'); diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_bjarngrim.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_bjarngrim.cpp index e96801f3ecb..0cf69eeb537 100644 --- a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_bjarngrim.cpp +++ b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_bjarngrim.cpp @@ -61,7 +61,7 @@ enum eEnums //OTHER SPELLS //SPELL_CHARGE_UP = 52098, // only used when starting walk from one platform to the other - //SPELL_TEMPORARY_ELECTRICAL_CHARGE = 52092, // triggered part of above + SPELL_TEMPORARY_ELECTRICAL_CHARGE = 52092, // triggered part of above NPC_STORMFORGED_LIEUTENANT = 29240, SPELL_ARC_WELD = 59085, @@ -77,6 +77,8 @@ enum eEnums STANCE_BATTLE = 2 }; +#define DATA_LIGHTNING_STRUCK 1834 + /*###### ## boss_bjarngrim ######*/ @@ -98,11 +100,14 @@ public: m_instance = creature->GetInstanceScript(); m_uiStance = STANCE_DEFENSIVE; memset(&m_auiStormforgedLieutenantGUID, 0, sizeof(m_auiStormforgedLieutenantGUID)); + canBuff = true; } InstanceScript* m_instance; bool m_bIsChangingStance; + bool achiLightningStruck; + bool canBuff; uint8 m_uiChargingStatus; uint8 m_uiStance; @@ -126,6 +131,11 @@ public: void Reset() { + if (canBuff) + if (!me->HasAura(SPELL_TEMPORARY_ELECTRICAL_CHARGE)) + me->AddAura(SPELL_TEMPORARY_ELECTRICAL_CHARGE, me); + + achiLightningStruck = false; m_bIsChangingStance = false; m_uiChargingStatus = 0; @@ -167,8 +177,21 @@ public: m_instance->SetData(TYPE_BJARNGRIM, NOT_STARTED); } + void EnterEvadeMode() + { + if (me->HasAura(SPELL_TEMPORARY_ELECTRICAL_CHARGE)) + canBuff = true; + else + canBuff = false; + + ScriptedAI::EnterEvadeMode(); + } + void EnterCombat(Unit* /*who*/) { + if (me->HasAura(SPELL_TEMPORARY_ELECTRICAL_CHARGE)) + achiLightningStruck = true; + DoScriptText(SAY_AGGRO, me); //must get both lieutenants here and make sure they are with him @@ -178,6 +201,14 @@ public: m_instance->SetData(TYPE_BJARNGRIM, IN_PROGRESS); } + uint32 GetData(uint32 type) + { + if (type == DATA_LIGHTNING_STRUCK) + return achiLightningStruck ? 1 : 0; + + return 0; + } + void KilledUnit(Unit* /*victim*/) { DoScriptText(RAND(SAY_SLAY_1, SAY_SLAY_2, SAY_SLAY_3), me); @@ -211,7 +242,7 @@ public: void UpdateAI(const uint32 uiDiff) { //Return since we have no target - if (!UpdateVictim()) + if (!UpdateVictim()) return; // Change stance @@ -432,8 +463,27 @@ public: }; +class achievement_lightning_struck : public AchievementCriteriaScript +{ + public: + achievement_lightning_struck() : AchievementCriteriaScript("achievement_lightning_struck") { } + + bool OnCheck(Player* /*player*/, Unit* target) + { + if (!target) + return false; + + if (Creature* bjarngrim = target->ToCreature()) + if (bjarngrim->AI()->GetData(DATA_LIGHTNING_STRUCK)) + return true; + + return false; + } +}; + void AddSC_boss_bjarngrim() { new boss_bjarngrim(); new mob_stormforged_lieutenant(); + new achievement_lightning_struck(); } From c0bc5f6dcc44ba95bf0f75a7486e36b527462d1b Mon Sep 17 00:00:00 2001 From: Emo Norfik Date: Sun, 8 Jan 2012 17:22:31 +0100 Subject: [PATCH 2/3] Scripts/Halls of Lightning: Move criteria check for "Lightning Struck" achievement from criteria script to DB. Thx to Vincent-Michael for pointing this out. --- .../02_boss_general_bjarngrim.sql | 5 +++ .../HallsOfLightning/boss_bjarngrim.cpp | 34 ------------------- 2 files changed, 5 insertions(+), 34 deletions(-) create mode 100644 sql/custom/Ulduar/HallsOfLightning/02_boss_general_bjarngrim.sql diff --git a/sql/custom/Ulduar/HallsOfLightning/02_boss_general_bjarngrim.sql b/sql/custom/Ulduar/HallsOfLightning/02_boss_general_bjarngrim.sql new file mode 100644 index 00000000000..6cd1a367e81 --- /dev/null +++ b/sql/custom/Ulduar/HallsOfLightning/02_boss_general_bjarngrim.sql @@ -0,0 +1,5 @@ +-- Lightning Struck achievement move from criteria script to DB thx Vincent-Michael +DELETE FROM `achievement_criteria_data` WHERE `ScriptName`='achievement_lightning_struck'; +DELETE FROM `achievement_criteria_data` WHERE `type`=7 AND `criteria_id`=6835; +INSERT INTO `achievement_criteria_data` (`criteria_id`, `type`, `value1`, `value2`, `ScriptName`) VALUES +(6835, 7, 52092, 0, ''); diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_bjarngrim.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_bjarngrim.cpp index 0cf69eeb537..c6f72890d1f 100644 --- a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_bjarngrim.cpp +++ b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_bjarngrim.cpp @@ -77,8 +77,6 @@ enum eEnums STANCE_BATTLE = 2 }; -#define DATA_LIGHTNING_STRUCK 1834 - /*###### ## boss_bjarngrim ######*/ @@ -106,7 +104,6 @@ public: InstanceScript* m_instance; bool m_bIsChangingStance; - bool achiLightningStruck; bool canBuff; uint8 m_uiChargingStatus; @@ -135,7 +132,6 @@ public: if (!me->HasAura(SPELL_TEMPORARY_ELECTRICAL_CHARGE)) me->AddAura(SPELL_TEMPORARY_ELECTRICAL_CHARGE, me); - achiLightningStruck = false; m_bIsChangingStance = false; m_uiChargingStatus = 0; @@ -189,9 +185,6 @@ public: void EnterCombat(Unit* /*who*/) { - if (me->HasAura(SPELL_TEMPORARY_ELECTRICAL_CHARGE)) - achiLightningStruck = true; - DoScriptText(SAY_AGGRO, me); //must get both lieutenants here and make sure they are with him @@ -201,14 +194,6 @@ public: m_instance->SetData(TYPE_BJARNGRIM, IN_PROGRESS); } - uint32 GetData(uint32 type) - { - if (type == DATA_LIGHTNING_STRUCK) - return achiLightningStruck ? 1 : 0; - - return 0; - } - void KilledUnit(Unit* /*victim*/) { DoScriptText(RAND(SAY_SLAY_1, SAY_SLAY_2, SAY_SLAY_3), me); @@ -463,27 +448,8 @@ public: }; -class achievement_lightning_struck : public AchievementCriteriaScript -{ - public: - achievement_lightning_struck() : AchievementCriteriaScript("achievement_lightning_struck") { } - - bool OnCheck(Player* /*player*/, Unit* target) - { - if (!target) - return false; - - if (Creature* bjarngrim = target->ToCreature()) - if (bjarngrim->AI()->GetData(DATA_LIGHTNING_STRUCK)) - return true; - - return false; - } -}; - void AddSC_boss_bjarngrim() { new boss_bjarngrim(); new mob_stormforged_lieutenant(); - new achievement_lightning_struck(); } From 1caf09267e255f1ddda3825ad646cf7387967c08 Mon Sep 17 00:00:00 2001 From: Emo Norfik Date: Sun, 8 Jan 2012 22:45:27 +0100 Subject: [PATCH 3/3] Scripts/Halls of Lightning: Change names of sql updates to TC standard. --- .../01_boss_general_bjarngrim.sql | 30 ------------------- ..._08_18_world_achievement_criteria_data.sql | 5 ++++ .../2012_01_08_18_world_creature_addon.sql | 3 ++ ...2012_01_08_18_world_spell_linked_spell.sql | 4 +++ .../2012_01_08_18_world_waypoint_data.sql | 8 +++++ .../2012_01_08_18_world_waypoint_scripts.sql | 10 +++++++ ...08_19_world_achievement_criteria_data.sql} | 0 7 files changed, 30 insertions(+), 30 deletions(-) delete mode 100644 sql/custom/Ulduar/HallsOfLightning/01_boss_general_bjarngrim.sql create mode 100644 sql/updates/world/2012_01_08_18_world_achievement_criteria_data.sql create mode 100644 sql/updates/world/2012_01_08_18_world_creature_addon.sql create mode 100644 sql/updates/world/2012_01_08_18_world_spell_linked_spell.sql create mode 100644 sql/updates/world/2012_01_08_18_world_waypoint_data.sql create mode 100644 sql/updates/world/2012_01_08_18_world_waypoint_scripts.sql rename sql/{custom/Ulduar/HallsOfLightning/02_boss_general_bjarngrim.sql => updates/world/2012_01_08_19_world_achievement_criteria_data.sql} (100%) diff --git a/sql/custom/Ulduar/HallsOfLightning/01_boss_general_bjarngrim.sql b/sql/custom/Ulduar/HallsOfLightning/01_boss_general_bjarngrim.sql deleted file mode 100644 index b4a77999612..00000000000 --- a/sql/custom/Ulduar/HallsOfLightning/01_boss_general_bjarngrim.sql +++ /dev/null @@ -1,30 +0,0 @@ --- HoL General Bjarngrim event Temporary Electrical Charge --- Clear wrong aura -UPDATE `creature_addon` SET `auras`='' WHERE `guid` = 126981; - --- add spell link for Temporary Electrical Charge -DELETE FROM `spell_linked_spell` WHERE `spell_trigger`='-52098' AND `spell_effect`='52092'; -INSERT INTO `spell_linked_spell` (`spell_trigger`, `spell_effect`, `type`, `comment`) VALUES -('-52098', '52092', '0', 'Charge Up - Temporary Electrical Charge'); - --- Set 10 sec delay on platforms where boss gets Temporary Electrical Charge -UPDATE `waypoint_data` SET `delay`=10000 WHERE `id`=1269810 AND `point` IN (2, 5, 11, 14); - --- Cast self Charge Up to get Temporary Electrical Charge -DELETE FROM `waypoint_scripts` WHERE `id`=12698101; -INSERT INTO `waypoint_scripts` (`id`, `delay`, `command`, `datalong`, `datalong2`, `dataint`, `x`, `y`, `z`, `o`, `guid`) VALUES -(12698101, 0, 14, 52092, 1, 0, 0, 0, 0, 0, 855), -(12698101, 2, 15, 52098, 1, 0, 0, 0, 0, 0, 856); -UPDATE `waypoint_data` SET `action`=12698101 WHERE `id`=1269810 AND `point` IN (5, 14); - --- Remove aura Temporary Electrical Charge -DELETE FROM `waypoint_scripts` WHERE `id`=12698102; -INSERT INTO `waypoint_scripts` (`id`, `delay`, `command`, `datalong`, `datalong2`, `dataint`, `x`, `y`, `z`, `o`, `guid`) VALUES -(12698102, 0, 14, 52092, 1, 0, 0, 0, 0, 0, 857); -UPDATE `waypoint_data` SET `action`=12698102 WHERE `id`=1269810 AND `point` IN (2, 3, 4, 11, 12, 13); - --- Lightning Struck achievement -DELETE FROM `disables` WHERE `sourceType`=4 AND `entry`=6835; -DELETE FROM `achievement_criteria_data` WHERE `type`=11 AND `criteria_id`=6835; -INSERT INTO `achievement_criteria_data` (`criteria_id`, `type`, `value1`, `value2`, `ScriptName`) VALUES -(6835, 11, 0, 0, 'achievement_lightning_struck'); diff --git a/sql/updates/world/2012_01_08_18_world_achievement_criteria_data.sql b/sql/updates/world/2012_01_08_18_world_achievement_criteria_data.sql new file mode 100644 index 00000000000..e20fd1c55bb --- /dev/null +++ b/sql/updates/world/2012_01_08_18_world_achievement_criteria_data.sql @@ -0,0 +1,5 @@ +-- Lightning Struck achievement +DELETE FROM `disables` WHERE `sourceType`=4 AND `entry`=6835; +DELETE FROM `achievement_criteria_data` WHERE `type`=11 AND `criteria_id`=6835; +INSERT INTO `achievement_criteria_data` (`criteria_id`, `type`, `value1`, `value2`, `ScriptName`) VALUES +(6835, 11, 0, 0, 'achievement_lightning_struck'); diff --git a/sql/updates/world/2012_01_08_18_world_creature_addon.sql b/sql/updates/world/2012_01_08_18_world_creature_addon.sql new file mode 100644 index 00000000000..7570cc14afe --- /dev/null +++ b/sql/updates/world/2012_01_08_18_world_creature_addon.sql @@ -0,0 +1,3 @@ +-- HoL General Bjarngrim event Temporary Electrical Charge +-- Clear wrong aura +UPDATE `creature_addon` SET `auras`='' WHERE `guid` = 126981; diff --git a/sql/updates/world/2012_01_08_18_world_spell_linked_spell.sql b/sql/updates/world/2012_01_08_18_world_spell_linked_spell.sql new file mode 100644 index 00000000000..927c6c0c663 --- /dev/null +++ b/sql/updates/world/2012_01_08_18_world_spell_linked_spell.sql @@ -0,0 +1,4 @@ +-- add spell link for Temporary Electrical Charge +DELETE FROM `spell_linked_spell` WHERE `spell_trigger`='-52098' AND `spell_effect`='52092'; +INSERT INTO `spell_linked_spell` (`spell_trigger`, `spell_effect`, `type`, `comment`) VALUES +('-52098', '52092', '0', 'Charge Up - Temporary Electrical Charge'); diff --git a/sql/updates/world/2012_01_08_18_world_waypoint_data.sql b/sql/updates/world/2012_01_08_18_world_waypoint_data.sql new file mode 100644 index 00000000000..e443f7c055a --- /dev/null +++ b/sql/updates/world/2012_01_08_18_world_waypoint_data.sql @@ -0,0 +1,8 @@ +-- Set 10 sec delay on platforms where boss gets Temporary Electrical Charge +UPDATE `waypoint_data` SET `delay`=10000 WHERE `id`=1269810 AND `point` IN (2, 5, 11, 14); + +-- Cast self Charge Up to get Temporary Electrical Charge +UPDATE `waypoint_data` SET `action`=12698101 WHERE `id`=1269810 AND `point` IN (5, 14); + +-- Remove aura Temporary Electrical Charge +UPDATE `waypoint_data` SET `action`=12698102 WHERE `id`=1269810 AND `point` IN (2, 3, 4, 11, 12, 13); diff --git a/sql/updates/world/2012_01_08_18_world_waypoint_scripts.sql b/sql/updates/world/2012_01_08_18_world_waypoint_scripts.sql new file mode 100644 index 00000000000..f6c147155ea --- /dev/null +++ b/sql/updates/world/2012_01_08_18_world_waypoint_scripts.sql @@ -0,0 +1,10 @@ +-- Cast self Charge Up to get Temporary Electrical Charge +DELETE FROM `waypoint_scripts` WHERE `id`=12698101; +INSERT INTO `waypoint_scripts` (`id`, `delay`, `command`, `datalong`, `datalong2`, `dataint`, `x`, `y`, `z`, `o`, `guid`) VALUES +(12698101, 0, 14, 52092, 1, 0, 0, 0, 0, 0, 855), +(12698101, 2, 15, 52098, 1, 0, 0, 0, 0, 0, 856); + +-- Remove aura Temporary Electrical Charge +DELETE FROM `waypoint_scripts` WHERE `id`=12698102; +INSERT INTO `waypoint_scripts` (`id`, `delay`, `command`, `datalong`, `datalong2`, `dataint`, `x`, `y`, `z`, `o`, `guid`) VALUES +(12698102, 0, 14, 52092, 1, 0, 0, 0, 0, 0, 857); diff --git a/sql/custom/Ulduar/HallsOfLightning/02_boss_general_bjarngrim.sql b/sql/updates/world/2012_01_08_19_world_achievement_criteria_data.sql similarity index 100% rename from sql/custom/Ulduar/HallsOfLightning/02_boss_general_bjarngrim.sql rename to sql/updates/world/2012_01_08_19_world_achievement_criteria_data.sql