diff options
| -rw-r--r-- | sql/updates/world/2012-10-14-00-world_distortions_in_time.sql | 37 | ||||
| -rw-r--r-- | src/server/scripts/Northrend/storm_peaks.cpp | 48 |
2 files changed, 85 insertions, 0 deletions
diff --git a/sql/updates/world/2012-10-14-00-world_distortions_in_time.sql b/sql/updates/world/2012-10-14-00-world_distortions_in_time.sql new file mode 100644 index 00000000000..fe74f8a7a80 --- /dev/null +++ b/sql/updates/world/2012-10-14-00-world_distortions_in_time.sql @@ -0,0 +1,37 @@ +-- Area conditions for Plant Chieftains Totem +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=17 AND `SourceEntry`=56765; +INSERT INTO `conditions`(`SourceTypeOrReferenceId`,`SourceEntry`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`ErrorTextId`,`Comment`) VALUES +(17,56765,29,30446,15,64,'Plant Chieftains Totem only useable next to Rift'); + +-- Apply Close Rift to The Chieftain's Totem +DELETE FROM `creature_template_addon` WHERE `entry`=30444; +INSERT INTO `creature_template_addon`(`entry`,`auras`) VALUES +(30444,'56763'); + +-- Assign aura script to Close Rift +DELETE FROM `spell_script_names` WHERE `spell_id`=56763; +INSERT INTO `spell_script_names`(`spell_id`,`ScriptName`) VALUES +(56763,'spell_close_rift'); + +-- Target conditions for spell triggered by Close Rift Periodic +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=13 AND `SourceEntry` IN (56764,61665); +INSERT INTO `conditions`(`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`Comment`) VALUES +(13,1,56764,31,3,30446,'Close Rift Periodic targets Frostfloe Rift'), +(13,1,61665,31,3,30446,'Despawn Rift targets Frostfloe Rift'); + +-- Assign SmartAI to Frostfloe Rift +UPDATE `creature_template` SET `AIName`='SmartAI',`ScriptName`='' WHERE `entry`=30446; + +-- Create SAI for Frostfloe Rift +DELETE FROM `smart_scripts` WHERE `entryorguid`=30446 AND `source_type`=0; +INSERT INTO `smart_scripts`(`entryorguid`,`id`,`link`,`event_type`,`event_param1`,`action_type`,`action_param1`,`action_param2`,`target_type`,`comment`) VALUES +(30446,1,2,8,61665,45,1,1,7,'Frostfloe Rift - On spell hit - Set data of invoker'), +(30446,2,0,61,0,41,0,0,1,'Frostfloe Rift - On spell hit - Despawn'); + +-- Assign SmartAI to Chieftain's Totem +UPDATE `creature_template` SET `AIName`='SmartAI',`ScriptName`='' WHERE `entry`=30444; + +-- Create SAI for Chieftain's Totem +DELETE FROM `smart_scripts` WHERE `entryorguid`=30444 AND `source_type`=0; +INSERT INTO `smart_scripts`(`entryorguid`,`event_type`,`event_param1`,`event_param2`,`action_type`,`action_param1`,`target_type`,`comment`) VALUES +(30444,38,1,1,33,30444,23,'Chieftains Totem - On data set - Give quest credit'); diff --git a/src/server/scripts/Northrend/storm_peaks.cpp b/src/server/scripts/Northrend/storm_peaks.cpp index 976a6e5dba5..fc4f2785990 100644 --- a/src/server/scripts/Northrend/storm_peaks.cpp +++ b/src/server/scripts/Northrend/storm_peaks.cpp @@ -564,6 +564,53 @@ class npc_hyldsmeet_protodrake : public CreatureScript } }; +enum CloseRift +{ + SPELL_DESPAWN_RIFT = 61665 +}; + +class spell_close_rift : public SpellScriptLoader +{ + public: + spell_close_rift() : SpellScriptLoader("spell_close_rift") { } + + class spell_close_rift_AuraScript : public AuraScript + { + PrepareAuraScript(spell_close_rift_AuraScript); + + bool Load() + { + _counter = 0; + return true; + } + + bool Validate(SpellInfo const* /*spell*/) + { + return sSpellMgr->GetSpellInfo(SPELL_DESPAWN_RIFT); + } + + void HandlePeriodic(AuraEffect const* /* aurEff */) + { + if (++_counter == 5) + GetTarget()->CastSpell((Unit*)NULL, SPELL_DESPAWN_RIFT, true); + } + + void Register() + { + OnEffectPeriodic += AuraEffectPeriodicFn(spell_close_rift_AuraScript::HandlePeriodic, EFFECT_0, SPELL_AURA_PERIODIC_TRIGGER_SPELL); + } + + private: + uint8 _counter; + + }; + + AuraScript* GetAuraScript() const + { + return new spell_close_rift_AuraScript(); + } +}; + void AddSC_storm_peaks() { new npc_agnetta_tyrsdottar(); @@ -574,4 +621,5 @@ void AddSC_storm_peaks() new npc_freed_protodrake(); new npc_icefang(); new npc_hyldsmeet_protodrake(); + new spell_close_rift(); } |
