aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoroffl <11556157+offl@users.noreply.github.com>2022-01-22 19:03:20 +0200
committerGitHub <noreply@github.com>2022-01-22 19:03:20 +0200
commitc0c12ad761845571f25bc0368a8c4bee7b361e3a (patch)
tree6a3f4ca7c2854ce3b999dfa0690fc5e3cf469a54
parent7964636ea5d78ada4bb8db3e01e1bad19ca64257 (diff)
Scripts/Spells: Handle player talk in spell scripts pt 1 (#27634)
-rw-r--r--sql/updates/world/3.3.5/2022_01_22_10_world.sql34
-rw-r--r--src/server/scripts/Northrend/zone_dragonblight.cpp45
2 files changed, 79 insertions, 0 deletions
diff --git a/sql/updates/world/3.3.5/2022_01_22_10_world.sql b/sql/updates/world/3.3.5/2022_01_22_10_world.sql
new file mode 100644
index 00000000000..b336213a81a
--- /dev/null
+++ b/sql/updates/world/3.3.5/2022_01_22_10_world.sql
@@ -0,0 +1,34 @@
+--
+DELETE FROM `spell_script_names` WHERE `spell_id` = 47304 AND `ScriptName` = 'spell_warsong_battle_standard';
+INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES
+(47304,'spell_warsong_battle_standard');
+
+UPDATE `creature_template` SET `maxlevel` = 70, `speed_run` = 1, `unit_flags` = 256, `unit_flags2` = 0 WHERE `entry` = 26678;
+DELETE FROM `creature_text` WHERE `CreatureID` = 26678 AND `GroupID` = 1;
+
+DELETE FROM `smart_scripts` WHERE `entryorguid` = 26678 AND `source_type` = 0;
+DELETE FROM `smart_scripts` WHERE `entryorguid` = 2667800 AND `source_type` = 9;
+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`,`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
+(26678,0,0,0,37,0,100,0,0,0,0,0,0,8,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Warsong Battle Standard - On AI Initialize - Set Reactstate Passive"),
+(26678,0,1,0,11,0,100,0,0,0,0,0,0,80,2667800,2,0,0,0,0,1,0,0,0,0,0,0,0,0,"Warsong Battle Standard - On Spawn - Run Script"),
+(26678,0,2,0,6,0,100,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Warsong Battle Standard - On Death - Say Line 0"),
+(26678,0,3,0,6,0,100,0,0,0,0,0,0,6,12053,0,0,0,0,0,23,0,0,0,0,0,0,0,0,"Warsong Battle Standard - On Death - Fail Quest 'The Might of the Horde'"),
+
+(2667800,9,0,0,0,0,100,0,0,0,0,0,0,11,23235,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Warsong Battle Standard - On Script - Cast 'Battle Standard Spawn'"),
+(2667800,9,1,0,0,0,100,0,2000,2000,0,0,0,11,47303,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Warsong Battle Standard - On Script - Cast 'Summon Anub'ar Invader'"),
+(2667800,9,2,0,0,0,100,0,15000,15000,0,0,0,11,47303,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Warsong Battle Standard - On Script - Cast 'Summon Anub'ar Invader'"),
+(2667800,9,3,0,0,0,100,0,15000,15000,0,0,0,11,47303,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Warsong Battle Standard - On Script - Cast 'Summon Anub'ar Invader'"),
+(2667800,9,4,0,0,0,100,0,0,0,0,0,0,11,47303,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Warsong Battle Standard - On Script - Cast 'Summon Anub'ar Invader'"),
+(2667800,9,5,0,0,0,100,0,25000,25000,0,0,0,11,47303,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Warsong Battle Standard - On Script - Cast 'Summon Anub'ar Invader'"),
+(2667800,9,6,0,0,0,100,0,15000,15000,0,0,0,11,47303,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Warsong Battle Standard - On Script - Cast 'Summon Anub'ar Invader'"),
+(2667800,9,7,0,0,0,100,0,0,0,0,0,0,11,47303,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Warsong Battle Standard - On Script - Cast 'Summon Anub'ar Invader'"),
+(2667800,9,8,0,0,0,100,0,0,0,0,0,0,11,47303,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Warsong Battle Standard - On Script - Cast 'Summon Anub'ar Invader'"),
+(2667800,9,9,0,0,0,100,0,20000,20000,0,0,0,15,12053,0,0,0,0,0,23,0,0,0,0,0,0,0,0,"Warsong Battle Standard - On Script - Quest Credit 'The Might of the Horde'"),
+(2667800,9,10,0,0,0,100,0,0,0,0,0,0,41,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Warsong Battle Standard - On Script - Despawn");
+
+DELETE FROM `smart_scripts` WHERE `entryorguid` = 26676 AND `source_type` = 0;
+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`,`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
+(26676,0,0,0,37,0,100,0,0,0,0,0,0,116,10,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Anub'ar Invader - On AI Initialize - Set Corpse Delay"),
+(26676,0,1,0,11,0,100,0,0,0,0,0,0,49,0,0,0,0,0,0,23,0,0,0,0,0,0,0,0,"Anub'ar Invader - On Spawn - Start Attack Summoner"),
+(26676,0,2,0,11,0,50,0,0,0,0,0,0,1,0,0,1,0,0,0,23,0,0,0,0,0,0,0,0,"Anub'ar Invader - On Spawn - Say Line 0"),
+(26676,0,3,0,7,0,100,0,0,0,0,0,0,41,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Anub'ar Invader - On Evade - Despawn");
diff --git a/src/server/scripts/Northrend/zone_dragonblight.cpp b/src/server/scripts/Northrend/zone_dragonblight.cpp
index 89bef93c401..a280d6757d0 100644
--- a/src/server/scripts/Northrend/zone_dragonblight.cpp
+++ b/src/server/scripts/Northrend/zone_dragonblight.cpp
@@ -28,6 +28,7 @@ EndContentData */
#include "ScriptMgr.h"
#include "CombatAI.h"
+#include "CreatureAIImpl.h"
#include "MotionMaster.h"
#include "ObjectAccessor.h"
#include "ObjectMgr.h"
@@ -689,6 +690,49 @@ class npc_torturer_lecraft : public CreatureScript
}
};
+/*######
+## Quest 12053: The Might of the Horde
+######*/
+
+enum WarsongBattleStandard
+{
+ TEXT_TAUNT_1 = 25888,
+ TEXT_TAUNT_2 = 25889,
+ TEXT_TAUNT_3 = 25890,
+ TEXT_TAUNT_4 = 25891,
+ TEXT_TAUNT_5 = 25892,
+ TEXT_TAUNT_6 = 25893,
+ TEXT_TAUNT_7 = 25894
+};
+
+// 47304 - Warsong Battle Standard
+class spell_warsong_battle_standard : public SpellScript
+{
+ PrepareSpellScript(spell_warsong_battle_standard);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return sObjectMgr->GetBroadcastText(TEXT_TAUNT_1) &&
+ sObjectMgr->GetBroadcastText(TEXT_TAUNT_2) &&
+ sObjectMgr->GetBroadcastText(TEXT_TAUNT_3) &&
+ sObjectMgr->GetBroadcastText(TEXT_TAUNT_4) &&
+ sObjectMgr->GetBroadcastText(TEXT_TAUNT_5) &&
+ sObjectMgr->GetBroadcastText(TEXT_TAUNT_6) &&
+ sObjectMgr->GetBroadcastText(TEXT_TAUNT_7);
+ }
+
+ void HandleScript(SpellEffIndex /*effIndex*/)
+ {
+ if (Unit* caster = GetCaster())
+ caster->Unit::Say(RAND(TEXT_TAUNT_1, TEXT_TAUNT_2, TEXT_TAUNT_3, TEXT_TAUNT_4, TEXT_TAUNT_5, TEXT_TAUNT_6, TEXT_TAUNT_7), caster);
+ }
+
+ void Register() override
+ {
+ OnEffectHit += SpellEffectFn(spell_warsong_battle_standard::HandleScript, EFFECT_1, SPELL_EFFECT_SCRIPT_EFFECT);
+ }
+};
+
void AddSC_dragonblight()
{
new npc_commander_eligor_dawnbringer();
@@ -696,4 +740,5 @@ void AddSC_dragonblight()
new spell_q12096_q12092_bark();
new npc_wyrmrest_defender();
new npc_torturer_lecraft();
+ RegisterSpellScript(spell_warsong_battle_standard);
}