mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-22 18:15:31 +01:00
[6.x] Scripts/Spells: K'ure & Decimatus, SAI + spell scripts
* Core/DB Add SAI for Decimatus. Add Decimatus SAI and Dark Siphon spell condition target. * Decimatus spell script for 169869. Decimatus Transformation Sickness. * Replace caster on target. Compiling fine! And then you never know what comes into head Blizzard. * Add three spell scripts. Add support spell scripts for 189549, 189512 and 189491.
This commit is contained in:
33
sql/updates/world/6.x/2016_06_11_00_world.sql
Normal file
33
sql/updates/world/6.x/2016_06_11_00_world.sql
Normal file
@@ -0,0 +1,33 @@
|
||||
-- Dark Siphon
|
||||
DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=13 AND `SourceGroup`=0 AND `SourceEntry`=165059;
|
||||
INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`SourceId`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionTarget`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
|
||||
(13,1,165059,0,0,31,0,3,81556 ,0,0,"","Dark Siphon – Cast only on K'ure.");
|
||||
|
||||
-- Decimatus SAI
|
||||
SET @ENTRY := 81989;
|
||||
UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=@ENTRY;
|
||||
DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY 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`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
|
||||
(@ENTRY,0,0,0,11,0,100,0,0,0,0,0,11,169869,34,0,0,0,0,1,0,0,0,0,0,0,0,"Decimatus - On Respawn - Cast Transformation Sickness on Self (Need Core Handler for Spell)"),
|
||||
(@ENTRY,0,1,0,0,0,100,0,9000,11000,9000,11000,11,174011,0,0,0,0,0,5,0,0,0,0,0,0,0,"Decimatus - In Combat - Cast Neutralize - Need Core Handler."),
|
||||
(@ENTRY,0,2,0,0,0,100,0,27000,27000,27000,27000,11,174016,1,0,0,0,0,1,0,0,0,0,0,0,0,"Decimatus - In Combat - Cast Decimate.");
|
||||
|
||||
-- spell_gen_decimatus_transformation_sickness
|
||||
DELETE FROM `spell_script_names` WHERE `ScriptName` = 'spell_gen_decimatus_transformation_sickness';
|
||||
INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES
|
||||
(169869,'spell_gen_decimatus_transformation_sickness');
|
||||
|
||||
-- spell_gen_azgalor_rain_of_fire_hellfire_citadel
|
||||
DELETE FROM `spell_script_names` WHERE `ScriptName` = 'spell_gen_azgalor_rain_of_fire_hellfire_citadel';
|
||||
INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES
|
||||
(189549,'spell_gen_azgalor_rain_of_fire_hellfire_citadel');
|
||||
|
||||
-- spell_gen_mark_of_kazrogal_hellfire
|
||||
DELETE FROM `spell_script_names` WHERE `ScriptName` = 'spell_gen_mark_of_kazrogal_hellfire';
|
||||
INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES
|
||||
(189512,'spell_gen_mark_of_kazrogal_hellfire');
|
||||
|
||||
-- spell_gen_anetheron_summon_towering_infernal
|
||||
DELETE FROM `spell_script_names` WHERE `ScriptName` = 'spell_gen_anetheron_summon_towering_infernal';
|
||||
INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES
|
||||
(189491,'spell_gen_anetheron_summon_towering_infernal');
|
||||
@@ -4228,6 +4228,164 @@ class spell_gen_clear_debuffs : public SpellScriptLoader
|
||||
}
|
||||
};
|
||||
|
||||
// 169869 - Transformation Sickness
|
||||
class spell_gen_decimatus_transformation_sickness : public SpellScriptLoader
|
||||
{
|
||||
public:
|
||||
spell_gen_decimatus_transformation_sickness() : SpellScriptLoader("spell_gen_decimatus_transformation_sickness") { }
|
||||
|
||||
class spell_gen_decimatus_transformation_sickness_SpellScript : public SpellScript
|
||||
{
|
||||
PrepareSpellScript(spell_gen_decimatus_transformation_sickness_SpellScript);
|
||||
|
||||
void HandleScript(SpellEffIndex /*effIndex*/)
|
||||
{
|
||||
if (Unit* target = GetHitUnit())
|
||||
target->SetHealth(target->CountPctFromMaxHealth(10));
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
OnEffectHitTarget += SpellEffectFn(spell_gen_decimatus_transformation_sickness_SpellScript::HandleScript, EFFECT_1, SPELL_EFFECT_SCRIPT_EFFECT);
|
||||
}
|
||||
};
|
||||
|
||||
SpellScript* GetSpellScript() const override
|
||||
{
|
||||
return new spell_gen_decimatus_transformation_sickness_SpellScript();
|
||||
}
|
||||
};
|
||||
|
||||
// 189491 - Summon Towering Infernal.
|
||||
class spell_gen_anetheron_summon_towering_infernal : public SpellScriptLoader
|
||||
{
|
||||
public:
|
||||
spell_gen_anetheron_summon_towering_infernal() : SpellScriptLoader("spell_gen_anetheron_summon_towering_infernal") { }
|
||||
|
||||
class spell_gen_anetheron_summon_towering_infernal_SpellScript : public SpellScript
|
||||
{
|
||||
PrepareSpellScript(spell_gen_anetheron_summon_towering_infernal_SpellScript);
|
||||
|
||||
void HandleDummy(SpellEffIndex /* effIndex */)
|
||||
{
|
||||
GetCaster()->CastSpell(GetHitUnit(), uint32(GetEffectValue()), true);
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
OnEffectHitTarget += SpellEffectFn(spell_gen_anetheron_summon_towering_infernal_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY);
|
||||
}
|
||||
};
|
||||
|
||||
SpellScript* GetSpellScript() const override
|
||||
{
|
||||
return new spell_gen_anetheron_summon_towering_infernal_SpellScript();
|
||||
}
|
||||
};
|
||||
|
||||
enum KazrogalHellfireMark
|
||||
{
|
||||
SPELL_MARK_OF_KAZROGAL_HELLFIRE = 189512,
|
||||
SPELL_MARK_OF_KAZROGAL_DAMAGE_HELLFIRE = 189515
|
||||
};
|
||||
|
||||
class MarkTargetHellfireFilter
|
||||
{
|
||||
public:
|
||||
bool operator()(WorldObject* target) const
|
||||
{
|
||||
if (Unit* unit = target->ToUnit())
|
||||
return unit->getPowerType() != POWER_MANA;
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
class spell_gen_mark_of_kazrogal_hellfire : public SpellScriptLoader
|
||||
{
|
||||
public:
|
||||
spell_gen_mark_of_kazrogal_hellfire() : SpellScriptLoader("spell_gen_mark_of_kazrogal_hellfire") { }
|
||||
|
||||
class spell_gen_mark_of_kazrogal_hellfire_SpellScript : public SpellScript
|
||||
{
|
||||
PrepareSpellScript(spell_gen_mark_of_kazrogal_hellfire_SpellScript);
|
||||
|
||||
void FilterTargets(std::list<WorldObject*>& targets)
|
||||
{
|
||||
targets.remove_if(MarkTargetHellfireFilter());
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_gen_mark_of_kazrogal_hellfire_SpellScript::FilterTargets, EFFECT_0, TARGET_UNIT_SRC_AREA_ENEMY);
|
||||
}
|
||||
};
|
||||
|
||||
class spell_gen_mark_of_kazrogal_hellfire_AuraScript : public AuraScript
|
||||
{
|
||||
PrepareAuraScript(spell_gen_mark_of_kazrogal_hellfire_AuraScript);
|
||||
|
||||
bool Validate(SpellInfo const* /*spell*/) override
|
||||
{
|
||||
if (!sSpellMgr->GetSpellInfo(SPELL_MARK_OF_KAZROGAL_DAMAGE_HELLFIRE))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
void OnPeriodic(AuraEffect const* aurEff)
|
||||
{
|
||||
Unit* target = GetTarget();
|
||||
|
||||
if (target->GetPower(POWER_MANA) == 0)
|
||||
{
|
||||
target->CastSpell(target, SPELL_MARK_OF_KAZROGAL_DAMAGE_HELLFIRE, true, NULL, aurEff);
|
||||
// Remove aura
|
||||
SetDuration(0);
|
||||
}
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
OnEffectPeriodic += AuraEffectPeriodicFn(spell_gen_mark_of_kazrogal_hellfire_AuraScript::OnPeriodic, EFFECT_0, SPELL_AURA_POWER_BURN);
|
||||
}
|
||||
};
|
||||
|
||||
SpellScript* GetSpellScript() const override
|
||||
{
|
||||
return new spell_gen_mark_of_kazrogal_hellfire_SpellScript();
|
||||
}
|
||||
|
||||
AuraScript* GetAuraScript() const override
|
||||
{
|
||||
return new spell_gen_mark_of_kazrogal_hellfire_AuraScript();
|
||||
}
|
||||
};
|
||||
|
||||
class spell_gen_azgalor_rain_of_fire_hellfire_citadel : public SpellScriptLoader
|
||||
{
|
||||
public:
|
||||
spell_gen_azgalor_rain_of_fire_hellfire_citadel() : SpellScriptLoader("spell_gen_azgalor_rain_of_fire_hellfire_citadel") { }
|
||||
|
||||
class spell_gen_azgalor_rain_of_fire_hellfire_citadel_SpellScript : public SpellScript
|
||||
{
|
||||
PrepareSpellScript(spell_gen_azgalor_rain_of_fire_hellfire_citadel_SpellScript);
|
||||
|
||||
void HandleDummy(SpellEffIndex /* effIndex */)
|
||||
{
|
||||
GetCaster()->CastSpell(GetHitUnit(), uint32(GetEffectValue()), true);
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
OnEffectHitTarget += SpellEffectFn(spell_gen_azgalor_rain_of_fire_hellfire_citadel_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY);
|
||||
}
|
||||
};
|
||||
|
||||
SpellScript* GetSpellScript() const override
|
||||
{
|
||||
return new spell_gen_azgalor_rain_of_fire_hellfire_citadel_SpellScript();
|
||||
}
|
||||
};
|
||||
|
||||
void AddSC_generic_spell_scripts()
|
||||
{
|
||||
new spell_gen_absorb0_hitlimit1();
|
||||
@@ -4318,4 +4476,8 @@ void AddSC_generic_spell_scripts()
|
||||
new spell_gen_mixology_bonus();
|
||||
new spell_gen_landmine_knockback_achievement();
|
||||
new spell_gen_clear_debuffs();
|
||||
new spell_gen_decimatus_transformation_sickness();
|
||||
new spell_gen_anetheron_summon_towering_infernal();
|
||||
new spell_gen_mark_of_kazrogal_hellfire();
|
||||
new spell_gen_azgalor_rain_of_fire_hellfire_citadel();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user