Skip to content

Instantly share code, notes, and snippets.

@tobmaps
Created November 11, 2011 14:56
Show Gist options
  • Save tobmaps/1358183 to your computer and use it in GitHub Desktop.
Save tobmaps/1358183 to your computer and use it in GitHub Desktop.
Wintergrasp RP-GG
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