Created
November 11, 2011 14:56
-
-
Save tobmaps/1358183 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/game/Entities/Vehicle/Vehicle.cpp b/src/server/game/Entities/Vehicle/Vehicle.cpp | |
index 107e275..09232c5 100755 | |
--- a/src/server/game/Entities/Vehicle/Vehicle.cpp | |
+++ b/src/server/game/Entities/Vehicle/Vehicle.cpp | |
diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp | |
index b669f8f..064ac77 100755 | |
--- a/src/server/game/Spells/SpellMgr.cpp | |
+++ b/src/server/game/Spells/SpellMgr.cpp | |
@@ -3204,6 +3204,9 @@ void SpellMgr::LoadDbcDataCorrections() | |
case 53246: // Marked for Death (Rank 5) | |
spellInfo->EffectSpellClassMask[0] = flag96(423937, 276955137, 2049); | |
break; | |
+ case 49761: // Rocket-Propelled Goblin Grenade | |
+ spellInfo->EffectRadiusIndex[1] = EFFECT_RADIUS_150_YARDS; | |
+ break; | |
case 70728: // Exploit Weakness (needs target selection script) | |
case 70840: // Devious Minds (needs target selection script) | |
spellInfo->EffectImplicitTargetA[0] = TARGET_UNIT_CASTER; | |
diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp | |
index f0b48a5..81fe9c9 100644 | |
--- a/src/server/scripts/Spells/spell_generic.cpp | |
+++ b/src/server/scripts/Spells/spell_generic.cpp | |
@@ -1048,6 +1048,81 @@ class spell_gen_seaforium_blast : public SpellScriptLoader | |
} | |
}; | |
+enum WintergraspRpggSpells | |
+{ | |
+ SPELL_RPGG_DAMAGE = 49769, | |
+ NPC_TOWER_CANNON = 28366 | |
+}; | |
+ | |
+class WintergraspVehicleCheck | |
+{ | |
+ public: | |
+ bool operator() (Unit* unit) | |
+ { | |
+ if (unit->IsVehicle() && unit->GetEntry() != NPC_TOWER_CANNON) // 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 +1458,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