-
-
Save Expecto/1359138 to your computer and use it in GitHub Desktop.
Wintergrasp RP-GG
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp | |
index f0b48a5..df3cf98 100644 | |
--- a/src/server/scripts/Spells/spell_generic.cpp | |
+++ b/src/server/scripts/Spells/spell_generic.cpp | |
@@ -1048,6 +1048,80 @@ class spell_gen_seaforium_blast : public SpellScriptLoader | |
} | |
}; | |
+enum WintergraspRpggSpells | |
+{ | |
+ SPELL_RPGG_DAMAGE = 49769, | |
+}; | |
+ | |
+class WintergraspVehicleCheck | |
+{ | |
+ public: | |
+ bool operator() (Unit* unit) | |
+ { | |
+ if (unit->IsVehicle() && unit->GetEntry() != 28366) // exclude cannons | |
+ return false; | |
+ return true; | |
+ } | |
+}; | |
+ | |
+class spell_gen_rocket_propelled_goblin_grenade : public SpellScriptLoader | |
+{ | |
+ public: | |
+ spell_gen_rocket_propelled_goblin_grenade() : SpellScriptLoader("spell_gen_rocket_propelled_goblin_grenade") { } | |
+ | |
+ class spell_gen_rocket_propelled_goblin_grenade_SpellScript : public SpellScript | |
+ { | |
+ PrepareSpellScript(spell_gen_rocket_propelled_goblin_grenade_SpellScript); | |
+ | |
+ bool Validate(SpellInfo const* /*spell*/) | |
+ { | |
+ if (!sSpellMgr->GetSpellInfo(SPELL_RPGG_DAMAGE)) | |
+ return false; | |
+ return true; | |
+ } | |
+ | |
+ bool Load() | |
+ { | |
+ _target = NULL; | |
+ return true; | |
+ } | |
+ | |
+ void SelectTarget(std::list<Unit*>& unitList) | |
+ { | |
+ if (unitList.empty()) | |
+ return; | |
+ | |
+ unitList.remove_if(WintergraspVehicleCheck()); | |
+ if (unitList.empty()) | |
+ return; | |
+ | |
+ _target = SelectRandomContainerElement(unitList); | |
+ unitList.clear(); | |
+ unitList.push_back(_target); | |
+ } | |
+ | |
+ void HandleDummy(SpellEffIndex effIndex) | |
+ { | |
+ PreventHitDefaultEffect(effIndex); | |
+ if (_target) | |
+ GetCaster()->CastSpell(_target, SPELL_RPGG_DAMAGE, true); | |
+ } | |
+ | |
+ void Register() | |
+ { | |
+ OnUnitTargetSelect += SpellUnitTargetFn(spell_gen_rocket_propelled_goblin_grenade_SpellScript::SelectTarget, EFFECT_1, TARGET_UNIT_CONE_ENEMY_24/*TARGET_UNIT_CONE_ENEMY*/); | |
+ OnEffectLaunch += SpellEffectFn(spell_gen_rocket_propelled_goblin_grenade_SpellScript::HandleDummy, EFFECT_1, SPELL_EFFECT_DUMMY); | |
+ } | |
+ | |
+ Unit* _target; | |
+ }; | |
+ | |
+ SpellScript* GetSpellScript() const | |
+ { | |
+ return new spell_gen_rocket_propelled_goblin_grenade_SpellScript(); | |
+ } | |
+}; | |
+ | |
enum FriendOrFowl | |
{ | |
SPELL_TURKEY_VENGEANCE = 25285, | |
@@ -1383,6 +1457,7 @@ void AddSC_generic_spell_scripts() | |
new spell_generic_clone(); | |
new spell_generic_clone_weapon(); | |
new spell_gen_seaforium_blast(); | |
+ new spell_gen_rocket_propelled_goblin_grenade(); | |
new spell_gen_turkey_marker(); | |
new spell_gen_lifeblood(); | |
new spell_gen_magic_rooster(); | |
DELETE FROM `spell_script_names` WHERE `spell_id` = 49761; | |
INSERT INTO `spell_script_names` VALUES | |
(49761,'spell_gen_rocket_propelled_goblin_grenade'); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment